Resultaten sorteren
Met behulp van de SELECT-opdracht werden de resultaten geretourneerd in dezelfde volgorde waarin de records aan de database waren toegevoegd. Dit is de standaard sorteervolgorde. In deze sectie zullen we bekijken hoe we onze zoekresultaten kunnen sorteren. Sorteren is simpelweg het herschikken van onze zoekresultaten op een bepaalde manier. Het sorteren kan worden uitgevoerd op een enkele kolom of op meer dan een kolom. Het kan worden gedaan op nummer-, strings- en datatypen voor datums.
Wat is ORDER BY in MySQL?
MySQL ORDER BY wordt gebruikt in combinatie met de SELECT-query om gegevens op een geordende manier te sorteren. De MySQL ORDER BY-clausule wordt gebruikt om de resultaatsets van de query in oplopende of aflopende volgorde te sorteren.
SELECT statement… [WHERE condition | GROUP BY `field_name(s)` HAVING condition] ORDER BY `field_name(s)` [ASC | DESC];
HIER
- "SELECT-instructie ..." is de normale selectiequery
-
- "[WHERE condition | GROUP BY" field_name (s) "HAVING condition" is de optionele voorwaarde die wordt gebruikt om de queryresultaten te filteren.
- "ORDER BY" voert de sortering van de resultaatset van de query uit
- "[ASC | DESC]" is het sleutelwoord dat wordt gebruikt om resultatensets in oplopende of aflopende volgorde te sorteren. Opmerking ASC wordt als standaard gebruikt.
Wat zijn DESC- en ASC-trefwoorden?
ASC is de korte vorm voor oplopend |
MySQL DESC is de korte vorm voor aflopend |
Het wordt gebruikt om de zoekresultaten in een stijl van boven naar beneden te sorteren. |
Het wordt gebruikt om de zoekresultaten in een stijl van onder naar boven te sorteren |
Bij het werken aan datatypen voor datums, wordt de vroegste datum bovenaan de lijst weergegeven. |
Als u aan datumtypen werkt, wordt de laatste datum bovenaan de lijst weergegeven. |
Bij het werken met numerieke gegevenstypen worden de laagste waarden bovenaan de lijst weergegeven. |
Wanneer u met numerieke gegevenstypen werkt, worden de hoogste waarden bovenaan de set met queryresultaten weergegeven. |
Wanneer u met stringgegevenstypen werkt, wordt de resultaatset van de query gesorteerd van degene die beginnen met de letter A tot en met de letter Z. |
Wanneer u met string-gegevenstypen werkt, wordt de resultaatset van de query gesorteerd van degene die beginnen met de letter Z en naar beneden gaan tot de letter A. |
Zowel de SQL DESC- als de ASC-sleutelwoorden worden samen gebruikt in combinatie met de SELECT-instructie en de MySQL ORDER BY-clausule.
DESC- en ASC-syntaxis
Het SQL DESC-sorteersleutelwoord heeft de volgende basissyntaxis.
SELECT {fieldName(s) | *} FROM tableName(s) [WHERE condition] ORDER BY fieldname(s) ASC /DESC [LIMIT N]
HIER
- SELECTEER {fieldName (s) | *} FROM tableName (s) is de instructie die de velden en tabel (len) bevat waaruit de resultatenset moet worden opgehaald .
- [WHERE-voorwaarde] is optioneel, maar kan worden gebruikt om de gegevens te filteren volgens de gegeven voorwaarde.
- ORDER BY veldnaam / -namen is verplicht en is het veld waarop de sortering moet worden uitgevoerd. Het MySQL DESC-sleutelwoord geeft aan dat de sortering in aflopende volgorde moet plaatsvinden.
- [LIMIT] is optioneel, maar kan worden gebruikt om het aantal resultaten te beperken dat wordt geretourneerd door de set met queryresultaten.
Voorbeelden:
Laten we nu naar een praktisch voorbeeld kijken -
SELECT * FROM members;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de volgende resultaten die hieronder worden weergegeven.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 |
Stel dat de marketingafdeling de ledengegevens wil rangschikken in aflopende volgorde van geboortedatum. Dit zal hen helpen om tijdig verjaardagsgroeten te sturen. We kunnen de genoemde lijst krijgen door een zoekopdracht uit te voeren zoals hieronder -
SELECT * FROM members ORDER BY date_of_birth DESC;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft ons de volgende resultaten die hieronder worden weergegeven.
Dezelfde zoekopdracht in oplopende volgorde
SELECTEER * UIT leden BESTEL OP geboortedatum ASC
Opmerking: NULL-waarden betekent geen waarden (geen nul of lege tekenreeks). Let op de manier waarop ze zijn gesorteerd.
Meer voorbeelden
Laten we eens kijken naar het volgende script dat alle ledenrecords opsomt.
SELECT * FROM `members`;
Het uitvoeren van het bovenstaande script geeft de volgende resultaten die hieronder worden weergegeven.
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
Stel dat we een lijst willen krijgen die de resultaatset van de query sorteert met behulp van het veld geslacht, dan gebruiken we het onderstaande script.
SELECT * FROM `members` ORDER BY `gender`;
membership_number | full_names | gender | date_of_birth | physical_address | postal_address | contct_number | |
---|---|---|---|---|---|---|---|
1 | Janet Jones | Female | 21-07-1980 | First Street Plot No 4 | Private Bag | 0759 253 542 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
2 | Janet Smith Jones | Female | 23-06-1980 | Melrose 123 | NULL | NULL | This email address is being protected from spambots. You need JavaScript enabled to view it. |
4 | Gloria Williams | Female | 14-02-1984 | 2nd Street 23 | NULL | NULL | NULL |
3 | Robert Phil | Male | 12-07-1989 | 3rd Street 34 | NULL | 12345 | This email address is being protected from spambots. You need JavaScript enabled to view it. |
5 | Leonard Hofstadter | Male | NULL | Woodcrest | NULL | 845738767 | NULL |
6 | Sheldon Cooper | Male | NULL | Woodcrest | NULL | 976736763 | NULL |
7 | Rajesh Koothrappali | Male | NULL | Woodcrest | NULL | 938867763 | NULL |
8 | Leslie Winkle | Male | 14-02-1984 | Woodcrest | NULL | 987636553 | NULL |
9 | Howard Wolowitz | Male | 24-08-1981 | SouthPark | P.O. Box 4563 | 987786553 | NULL |
"Vrouwelijke" leden worden eerst weergegeven, gevolgd door "Mannelijke" leden, dit komt doordat wanneer de ORDER BY DESC-clausule wordt gebruikt zonder het ASC- of MySQL DESC-sleutelwoord op te geven, MySQL standaard de queryresultaten in oplopende volgorde heeft gesorteerd.
Laten we nu eens kijken naar een voorbeeld dat sorteert met behulp van twee kolommen ; de eerste wordt standaard in oplopende volgorde gesorteerd, terwijl de tweede kolom in aflopende volgorde is gesorteerd .
SELECT * FROM `members` ORDER BY `gender`,`date_of_birth` DESC;
Het uitvoeren van het bovenstaande script in MySQL-workbench tegen de myflixdb geeft de volgende resultaten.
De geslachtskolom werd standaard in oplopende volgorde gesorteerd, terwijl de geboortedatum expliciet in aflopende volgorde werd gesorteerd
Waarom kunnen we DESC en ASC gebruiken?
Stel dat we een betalingsgeschiedenis voor een videotheeklid willen afdrukken om vragen van de receptie te helpen beantwoorden, zou het dan niet logischer zijn om de betalingen in aflopende chronologische volgorde te laten afdrukken, te beginnen met de recente betaling naar de eerdere betaling?
DESC in SQL is een sleutelwoord dat in dergelijke situaties handig wordt. We kunnen een zoekopdracht schrijven die de lijst in aflopende volgorde sorteert op basis van de betalingsdatum.
Stel dat de marketingafdeling een lijst met films per categorie wil krijgen die leden kunnen gebruiken om te beslissen welke films beschikbaar zijn in de bibliotheek bij het huren van films, zou het dan niet logischer zijn om de filmcategorienamen en -titels oplopend te sorteren, zodat leden snel de informatie uit de lijst kunnen opzoeken?
Het ASC-sleutelwoord is handig in dergelijke situaties; we kunnen de filmlijst in oplopende volgorde sorteren op categorienaam en filmtitel.
Overzicht
- Het sorteren van queryresultaten is het herschikken van de rijen die worden geretourneerd door een set met queryresultaten, in oplopende of aflopende volgorde.
- Het sleutelwoord DESC in SQL wordt gebruikt om de queryresultaten in aflopende volgorde te sorteren.
- Het ASC-sleutelwoord wordt gebruikt om de set met zoekresultaten in oplopende volgorde te sorteren.
- Zowel DESC als ASC werken samen met het ORDER BY-trefwoord. Ze kunnen ook worden gebruikt in combinatie met andere trefwoorden zoals WHERE-clausule en LIMIT
- De standaardwaarde voor ORDER BY wanneer niets expliciet is opgegeven, is ASC.