BESTEL DOOR binnen MySQLASC- en DESC-zoekopdracht met voorbeeld
โก Slimme samenvatting
BESTEL DOOR binnen MySQL Sorteert zoekresultaten in oplopende of aflopende volgorde met behulp van de trefwoorden ASC en DESC. De onderstaande secties leggen de syntaxis, sortering op รฉรฉn kolom en op meerdere kolommen, plaatsing van NULL-waarden en uitgewerkte voorbeelden uit die zijn uitgevoerd op de voorbeelddatabase myflixdb.

Wat is BESTEL DOOR in MySQL?
MySQL BESTELLING DOOR is een clausule die wordt gebruikt in de SELECT-query om gegevens op een ordelijke manier te sorteren. MySQL De ORDER BY-clausule sorteert de zoekresultaten in oplopende of aflopende volgorde, op รฉรฉn kolom of op meerdere kolommen tegelijk.
Wanneer de SELECT-opdracht op zichzelf wordt gebruikt, worden de rijen geretourneerd in de volgorde waarin de opslagengine ze leest, wat geen gegarandeerde volgorde is. Sorteren is simpelweg het herschikken van die rijen in een specifieke volgorde. Dit kan worden uitgevoerd op numerieke, tekenreeks- en datumgegevenstypen.
MySQL ORDER BY-syntaxis
Voordat we naar voorbeelden kijken, is het handig om te zien waar de clausule zich bevindt binnen een volledige SELECT-instructie.
SELECT statement... [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
HIER
- "SELECT-instructie... " Dit is de standaard select-query.
- โ | โ vertegenwoordigt alternatieven.
- โ[WAAR voorwaarde | GROUP BY `veldnaam(en)` HAVING voorwaarde]โ Dit is de optionele voorwaarde die wordt gebruikt om de resultaten van de query te filteren.
- โBESTEL DOORโ Voert de sortering van de queryresultaten uit.
- โ[ASC | BESCHRIJVING]โ is het trefwoord dat wordt gebruikt om de resultaten in oplopende of aflopende volgorde te sorteren. Merk op dat ASC is de standaard.
Wat zijn DESC- en ASC-trefwoorden?
ASC en DESC zijn de twee sorteerrichtingen die ORDER BY accepteert. De onderstaande tabel vergelijkt ze voor de gegevenstypen waarop u het vaakst zult sorteren.
ASC is de korte vorm voor oplopend |
MySQL DESC is de korte vorm voor aflopend |
|---|---|
| Het wordt gebruikt om de zoekresultaten van boven naar beneden te sorteren. | Het wordt gebruikt om de zoekresultaten van onder naar boven te sorteren. |
| Wanneer u met datumgegevenstypen werkt, wordt de vroegste datum bovenaan de lijst weergegeven. | Bij het werken met datumgegevenstypen wordt de meest recente datum bovenaan de lijst weergegeven. |
| Wanneer u met numerieke gegevenstypen werkt, worden de laagste waarden bovenaan de lijst weergegeven. | Bij het werken met numerieke gegevenstypen worden de hoogste waarden bovenaan de resultaten van de query weergegeven. |
| Wanneer u met stringgegevenstypen werkt, wordt de resultatenset van de zoekopdracht gesorteerd van de resultaten die beginnen met de letter A en oplopen tot de letter Z. | Wanneer u met stringgegevenstypen werkt, wordt de resultatenset van de zoekopdracht gesorteerd van de resultaten die beginnen met de letter Z en aflopen tot de letter A. |
Zowel de SQL DESC- als de ASC-keywords worden gebruikt in combinatie met de SELECT-instructie en de MySQL ORDER BY-clausule.
DESC- en ASC-syntaxis
Het SQL DESC sort-trefwoord heeft de volgende basis-syntaxis.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC | DESC [LIMIT N];
HIER
- SELECTEER {veldnaam(en) | *} FROM tabelNaam(en) Dit is de verklaring die de velden en tabel(len) bevat waaruit de resultaatset moet worden verkregen.
- [WHERE-voorwaarde] is optioneel, maar kan worden gebruikt om de gegevens te filteren op basis van de gegeven voorwaarde.
- SORTEREN OP veldnaam/namen is verplicht en geeft het veld aan waarop de sortering wordt uitgevoerd. MySQL Het trefwoord DESC geeft aan dat de sortering in aflopende volgorde plaatsvindt.
- [LIMIET N] is optioneel, maar kan worden gebruikt om het aantal rijen te beperken dat wordt geretourneerd in de resultatenset van de query.
Waarom DESC en ASC gebruiken in MySQL?
De syntax kennen is slechts de helft van het verhaal. De reden dat ORDER BY bestaat, is dat een resultaatset die gemakkelijk door een database kan worden gegenereerd, niet altijd gemakkelijk leesbaar is voor een mens.
Stel, u print een betalingsgeschiedenis van een lid van een videotheek zodat de receptie snel vragen kan beantwoorden. Het is veel logischer om de betalingen in aflopende chronologische volgorde af te drukken, beginnend met de meest recente betaling en terugwerkend naar de oudste. Het sleutelwoord DESC in SQL is in zo'n situatie erg handig, omdat de lijst dan gesorteerd kan worden op de betalingsdatum.
Stel dat de marketingafdeling een lijst met films per categorie wil, zodat leden kunnen zien welke titels de bibliotheek heeft voordat ze een film lenen. Door de categorienamen en filmtitels in oplopende volgorde te sorteren, kunnen leden snel informatie opzoeken, net zoals in een index. Het trefwoord ASC dient dit doel.
Kort gezegd zet ORDER BY een ruwe resultatenset om in een rapport. Het trefwoord dat u kiest, hangt af van de vraag die de lezer stelt: wat is er recent gebeurd? roept op tot DESC, terwijl Waar vind ik dit artikel? roept op tot ASC.
MySQL SORTEREN OP Voorbeeld
Alle volgende voorbeelden worden uitgevoerd met de myflixdb-voorbeelddatabase. Begin met de ongesorteerde ledentabel, die in de standaardvolgorde wordt geretourneerd.
SELECT * FROM members;
Voer het bovenstaande script uit in MySQL Workbench levert de volgende resultaten op in combinatie met myflixdb, zoals hieronder weergegeven.
| lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contact_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Vrouwen | 21-07-1980 | Eerste straatkavel nr. 4 | Privรฉ tas | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smit Jones | Vrouwen | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Fil | Mannen | 12-07-1989 | 3e Straat 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Vrouwen | 14-02-1984 | 2e Straat 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Mannen | NULL | Houthaantje | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mannen | NULL | Houthaantje | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mannen | NULL | Houthaantje | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Mannen | 14-02-1984 | Houthaantje | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mannen | 24-08-1981 | South Park | P.O. Box 4563 | 987786553 | NULL |
Sorteren in aflopende volgorde met DESC
Stel dat de marketingafdeling de ledengegevens gesorteerd wil hebben op aflopende geboortedatum. Dit helpt het team om tijdig verjaardagswensen te versturen. De onderstaande query genereert de gewenste lijst.
SELECT * FROM members ORDER BY date_of_birth DESC;
Voer het bovenstaande script uit in MySQL Workbench levert de volgende resultaten op in combinatie met myflixdb, zoals hieronder weergegeven.
Sorteren in oplopende volgorde met ASC
Dezelfde zoekopdracht in oplopende volgorde verwisselt simpelweg het trefwoord.
SELECT * FROM members ORDER BY date_of_birth ASC;
Let op: NULL betekent helemaal geen waarde, wat niet hetzelfde is als nul of een lege tekenreeks. Let in beide schermafbeeldingen op hoe de NULL-datums bij elkaar zijn gegroepeerd: MySQL NULL wordt als lager beschouwd dan elke andere waarde, dus rijen met NULL verschijnen eerst in ASC en als laatste in DESC.
Hoe sorteer je op meerdere kolommen in MySQL
Sorteren op รฉรฉn kolom beantwoordt eenvoudige vragen. Rapporten vereisen meestal een tweede sorteerniveau, en ORDER BY accepteert een door komma's gescheiden lijst met velden, precies voor dat doel.
Neem het volgende SQL-sorteerscript in overweging, dat alle ledenrecords weergeeft zonder expliciete instructies.
SELECT * FROM `members`;
Wanneer u bovenstaand script uitvoert, krijgt u de volgende resultaten.
| lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contact_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Vrouwen | 21-07-1980 | Eerste straatkavel nr. 4 | Privรฉ tas | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smit Jones | Vrouwen | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 3 | Robert Fil | Mannen | 12-07-1989 | 3e Straat 34 | NULL | 12345 | rm@tstreet.com |
| 4 | Gloria Williams | Vrouwen | 14-02-1984 | 2e Straat 23 | NULL | NULL | NULL |
| 5 | Leonard Hofstadter | Mannen | NULL | Houthaantje | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mannen | NULL | Houthaantje | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mannen | NULL | Houthaantje | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Mannen | 14-02-1984 | Houthaantje | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mannen | 24-08-1981 | South Park | P.O. Box 4563 | 987786553 | NULL |
Een enkele kolom sorteren op standaardvolgorde
Stel dat we een lijst willen die de zoekresultaten sorteert op basis van het veld 'geslacht'. Het onderstaande script doet dat zonder een sorteerrichting te specificeren.
SELECT * FROM `members` ORDER BY `gender`;
| lidmaatschapsnummer | volledige namen | geslacht | geboortedatum | fysiek adres | postadres | contact_nummer | |
|---|---|---|---|---|---|---|---|
| 1 | Janet Jones | Vrouwen | 21-07-1980 | Eerste straatkavel nr. 4 | Privรฉ tas | 0759 253 542 | janetjones@yagoo.cm |
| 2 | Janet Smit Jones | Vrouwen | 23-06-1980 | Melrose 123 | NULL | NULL | jj@fstreet.com |
| 4 | Gloria Williams | Vrouwen | 14-02-1984 | 2e Straat 23 | NULL | NULL | NULL |
| 3 | Robert Fil | Mannen | 12-07-1989 | 3e Straat 34 | NULL | 12345 | rm@tstreet.com |
| 5 | Leonard Hofstadter | Mannen | NULL | Houthaantje | NULL | 845738767 | NULL |
| 6 | Sheldon Cooper | Mannen | NULL | Houthaantje | NULL | 976736763 | NULL |
| 7 | Rajesh Koothrappali | Mannen | NULL | Houthaantje | NULL | 938867763 | NULL |
| 8 | Leslie Winkle | Mannen | 14-02-1984 | Houthaantje | NULL | 987636553 | NULL |
| 9 | Howard Wolowitz | Mannen | 24-08-1981 | South Park | P.O. Box 4563 | 987786553 | NULL |
Eerst worden vrouwelijke leden weergegeven, gevolgd door mannelijke leden. Dit komt doordat wanneer de ORDER BY-clausule wordt gebruikt zonder de ASC- of MySQL DESC-trefwoord, MySQL Sorteert de zoekresultaten standaard in oplopende volgorde.
Twee kolommen in tegengestelde richting sorteren
Laten we nu eens kijken naar een voorbeeld dat het volgende uitvoert: sorteren met behulp van twee kolommenDe eerste kolom is naargelang in oplopende volgorde standaard, terwijl de tweede kolom naargelang in aflopende volgorde.
SELECT * FROM `members` ORDER BY `gender`, `date_of_birth` DESC;
Voer het bovenstaande script uit in MySQL Workbench levert de volgende resultaten op bij het gebruik van myflixdb.
De kolom 'geslacht' werd standaard in oplopende volgorde gesorteerd, terwijl de kolom 'geboortedatum' expliciet in aflopende volgorde werd gesorteerd. Elk richtingssleutelwoord is alleen van toepassing op de kolom die erop volgt.
Hoe combineer je ORDER BY met WHERE, LIMIT en GROUP BY?
ORDER BY is zelden de enige clausule in een query in een productieomgeving. MySQL De clausules worden altijd in een vaste volgorde geรซvalueerd, en die volgorde verklaart waarom de resultaten er zo uitzien.
- NU leest de rijen uit de tabel.
- WAAR Verwijdert de rijen die niet aan de voorwaarde voldoen.
- GROEP DOOR De overgebleven rijen worden samengevoegd tot groepen, en HAVING filtert die groepen.
- BESTELLING DOOR rangschikt de resterende rijen.
- LIMIT snijdt het gevraagde aantal rijen uit de gesorteerde lijst.
Omdat ORDER BY na WHERE en GROUP BY maar vรณรณr LIMIT wordt uitgevoerd, wordt een query zoals "de vijf jongste leden van Woodcrest" in รฉรฉn statement weergegeven.
SELECT full_names, date_of_birth FROM members WHERE physical_address = 'Woodcrest' ORDER BY date_of_birth DESC LIMIT 5;
Dezelfde volgorde geldt voor gegroepeerde resultaten. Geaggregeerde waarden geproduceerd door geaggregeerde functies Zo kunnen categorieรซn zoals COUNT gesorteerd worden, waardoor de drukste categorie bovenaan het rapport komt te staan.
SELECT gender, COUNT(*) AS members_count FROM members GROUP BY gender ORDER BY members_count DESC;
Tip: Met ORDER BY kunt u sorteren op een kolomalias, een expressie of zelfs op kolompositie, zoals ORDER BY 3. Sorteren op positie is echter kwetsbaar, omdat het invoegen van een nieuwe kolom in de SELECT-lijst de sorteersleutel ongemerkt wijzigt. Geef de kolom daarom liever een naam.
Een belangrijk prestatieaspect om te onthouden. Wanneer de gesorteerde kolom een โโindex bevat, MySQL De rijen kunnen in indexvolgorde worden gelezen en het sorteren kan volledig worden overgeslagen. Zonder index dwingen grote tabellen een sortering in het geheugen of op de schijf af, wat meestal de reden is dat een rapportquery traag wordt.

ASC is de korte vorm voor oplopend
MySQL DESC is de korte vorm voor aflopend

