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.

  • ๐Ÿ”  Standaardgedrag: ORDER BY sorteert in oplopende volgorde wanneer noch ASC noch DESC is gespecificeerd, dus ASC is in de meeste gevallen optioneel.
  • โ€‹ ASC-trefwoord: ASC rangschikt getallen van laag naar hoog, tekenreeksen van A tot Z en datums van vroegst naar laatst.
  • โฌ‡๏ธ BESCHRIJVING Trefwoord: DESC keert die volgorde om, wat geschikt is voor betalingsgeschiedenissen waarbij de meest recente betaling eerst komt en lijsten met aflopende geboortedata.
  • ๐Ÿงฎ Sorteren op meerdere kolommen: De kolomvolgorde is belangrijk. ORDER BY gender, date_of_birth DESC sorteert eerst op geslacht in oplopende volgorde, daarna op geboortedatum in aflopende volgorde binnen elke groep.
  • ๐Ÿ”Ž Clausulecombinatie: WHERE filtert rijen, GROUP BY aggregeert ze, ORDER BY sorteert het resultaat en LIMIT beperkt het aantal rijen.
  • โš™๏ธ Prestatiefactor: Een index op de gesorteerde kolom maakt het mogelijk MySQL om een โ€‹โ€‹bestandssorteerbewerking op grote tabellen te vermijden.

BESTEL DOOR binnen MySQL

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.

DESC- en ASC-trefwoordenASC is de korte vorm voor oplopend DESC- en ASC-trefwoordenMySQL 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 email
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.

MySQL ORDER BY DESC queryresultaat

Sorteren in oplopende volgorde met ASC

Dezelfde zoekopdracht in oplopende volgorde verwisselt simpelweg het trefwoord.

SELECT * FROM members ORDER BY date_of_birth ASC;

MySQL ORDER BY ASC queryresultaat

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 email
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 email
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.

MySQL Voorbeeld van sorteren op twee kolommen

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.

  1. NU leest de rijen uit de tabel.
  2. WAAR Verwijdert de rijen die niet aan de voorwaarde voldoen.
  3. GROEP DOOR De overgebleven rijen worden samengevoegd tot groepen, en HAVING filtert die groepen.
  4. BESTELLING DOOR rangschikt de resterende rijen.
  5. 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.

Veelgestelde vragen

Dat kan. Zonder een index op de gesorteerde kolom, MySQL Voert een bestandssortering uit over de volledige resultatenset. Door een index toe te voegen die overeenkomt met de ORDER BY-kolom en -richting, kan de server de rijen in de juiste volgorde lezen en deze stap overslaan.

Meestal niet. Standaard sorteringen zoals utf8mb4_0900_ai_ci zijn niet hoofdlettergevoelig, dus "apple" en "Apple" worden samen gesorteerd. Een binaire sortering of _cs-sortering, of ORDER BY BINARY column_name, zorgt voor een hoofdlettergevoelige sortering waarbij hoofdletters eerst komen.

Ja. ORDER BY RAND() schudt de resultatenset door elkaar, wat handig is om een โ€‹โ€‹willekeurige film of lid te selecteren. Het telt elke rij op voordat het sorteert, dus combineer het met LIMIT en vermijd het bij zeer grote tabellen.

Ja. AI-hulpmiddelen ingebouwd in tools zoals MySQL Werkbank Zet verzoeken in gewone taal om in SELECT-statements met ORDER BY. Controleer altijd de gegenereerde sorteerkolom en -richting, want een AI kan niet weten welke volgorde uw rapport vereist.

Gedeeltelijk. AI-gestuurde adviseurs lezen trage querylogs en stellen indexen voor die bestandssorteringsbewerkingen overbodig maken. De suggesties moeten echter nog steeds door mensen worden beoordeeld, omdat elke extra index invoegingen en updates in dezelfde tabel vertraagt.

Vat dit bericht samen met: