MySQL ORDER BY

Samenvatting: in deze tutorial leert u hoe u een resultatenset kunt sorteren met behulp van de MySQL ORDER BY-clausule.

Inleiding tot de MySQL ORDER BY-clausule

Wanneer u het SELECT statement gebruikt om gegevens uit een tabel op te vragen, is de resultatenset niet gesorteerd. Dit betekent dat de rijen in de resultatenset in willekeurige volgorde kunnen staan.

Om de resultatenset te sorteren, voegt u de ORDER BY-clausule toe aan het SELECT statement. Hieronder wordt de syntaxis van de ORDER BY-clausule geïllustreerd:

In deze syntaxis geeft u na de ORDER BY-clausule de een of meer kolommen op die u wilt sorteren.

De ASC staat voor oplopend en de DESC staat voor aflopend. U gebruikt ASC om de resultatenset in oplopende volgorde te sorteren en DESC om de resultatenset in aflopende volgorde te sorteren.

Deze ORDER BY clausule sorteert de resultatenset in oplopende volgorde:

ORDER BY column1 ASC;
Code language: SQL (Structured Query Language) (sql)

En deze ORDER BY clausule sorteert de resultatenset in aflopende volgorde:

ORDER BY column1 DESC;
Code language: SQL (Structured Query Language) (sql)

De standaardinstelling is dat de ORDER BY-clausule ASC gebruikt als u niet expliciet een optie opgeeft.

Daarom zijn de volgende clausules equivalent:

ORDER BY column1 ASC;
Code language: SQL (Structured Query Language) (sql)

en

ORDER BY column1;
Code language: SQL (Structured Query Language) (sql)

Als u de resultatenset op meerdere kolommen wilt sorteren, specificeert u een door komma’s gescheiden lijst met kolommen in de ORDER BY-clausule:

ORDER BY column1, column2;
Code language: SQL (Structured Query Language) (sql)

Het is mogelijk om het resultaat te sorteren op een kolom in oplopende volgorde, en vervolgens op een andere kolom in aflopende volgorde:

ORDER BY column1 ASC, column2 DESC;
Code language: SQL (Structured Query Language) (sql)

In dit geval de ORDER BY-clausule:

  • Sorteer eerst de resultatenset op de waarden in de column1 in oplopende volgorde.
  • Sorteer vervolgens de gesorteerde resultatenset op de waarden in de column2 in aflopende volgorde. Merk op dat de volgorde van de waarden in de column1 niet verandert in deze stap, alleen de volgorde van de waarden in de column2 verandert.

Merk op dat de ORDER BY clausule altijd wordt geëvalueerd na de FROM en SELECT clausule.

MySQL ORDER BY voorbeelden

We zullen de customers tabel uit de voorbeelddatabase gebruiken voor de demonstratie.

A) MySQL ORDER BY-clausule gebruiken om waarden in één kolom te sorteren voorbeeld

De volgende query gebruikt de ORDER BY-clausule om de klanten te sorteren op de waarden in de contactLastName-kolom in oplopende volgorde.

SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname;
Code language: SQL (Structured Query Language) (sql)

Probeer het

Als u klanten op hun achternaam in aflopende volgorde wilt sorteren, gebruikt u de DESC na de contactLastname kolom in de ORDER BY clausule zoals weergegeven in de volgende query:

SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC;
Code language: SQL (Structured Query Language) (sql)

Probeer het eens

B) MySQL ORDER BY-clausule gebruiken om waarden in meerdere kolommen te sorteren

Als u de klanten wilt sorteren op achternaam in aflopende volgorde en vervolgens op voornaam in oplopende volgorde, specificeert u zowel DESC als ASC in de overeenkomstige kolom als volgt:

SELECTcontactLastname,contactFirstnameFROMcustomersORDER BYcontactLastname DESC,contactFirstname ASC;
Code language: SQL (Structured Query Language) (sql)

Probeer het uit

In dit voorbeeld, sorteert de ORDER BY-clausule de resultatenreeks eerst op achternaam in aflopende volgorde en vervolgens op voornaam in oplopende volgorde om de uiteindelijke resultatenreeks te produceren.

C) MySQL ORDER BY gebruiken om een resultaatverzameling te sorteren op een expressievoorbeeld

Zie de volgende orderdetails tabel uit de voorbeelddatabase.

De volgende query selecteert de bestelregelitems uit de tabel orderdetails. Hij berekent het subtotaal voor elk regelitem en sorteert de resultatenset op basis van het subtotaal.

SELECT orderNumber, orderlinenumber, quantityOrdered * priceEachFROM orderdetailsORDER BY quantityOrdered * priceEach DESC;
Code language: SQL (Structured Query Language) (sql)

Probeer het

Om de query leesbaarder te maken, kunt u aan de expressie in de SELECT-clausule een kolomalias toekennen en die kolomalias gebruiken in de ORDER BY-clausule, zoals in de volgende query wordt getoond:

SELECT orderNumber, orderLineNumber, quantityOrdered * priceEach AS subtotalFROM orderdetailsORDER BY subtotal DESC;
Code language: SQL (Structured Query Language) (sql)

Probeer het eens

In dit voorbeeld, hebben we subtotal gebruikt als de kolom alias voor de uitdrukking quantityOrdered * priceEach en hebben we de resultatenset gesorteerd op de subtotal alias.

De kolom alias kan worden gebruikt in de ORDER BY-clausule omdat de SELECT-clausule wordt geëvalueerd vóór de ORDER BY-clausule. Tegen de tijd dat de ORDER BY clausule is geëvalueerd, is de kolom alias toegankelijk.

MysqlX ORDER BY gebruiken om gegevens te sorteren met behulp van een aangepaste lijst

Met de ORDER BY-clausule kunt u gegevens sorteren met behulp van een aangepaste lijst door gebruik te maken van de FIELD()-functie.

Zie de volgende orders tabel uit de voorbeelddatabase.

Voorstel dat u de verkooporders wilt sorteren op basis van hun statussen in de volgende volgorde:

  • In behandeling
  • Op wacht
  • Opgeschort
  • Opgelost
  • Ontisputed
  • Verzonden

Om dit te doen, kunt u de FIELD() functie gebruiken om elke orderstatus in een getal om te zetten en het resultaat te sorteren op het resultaat van de FIELD() functie:

Probeer het uit

De volgende expressie:

FIELD(status, 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped');
Code language: SQL (Structured Query Language) (sql)

returns the index of the status in the list 'In Process', 'On Hold', 'Cancelled', 'Resolved', 'Disputed', 'Shipped'.

Bijv. als de statusIn Process is, zal de functie 1 teruggeven. Als de statusOn Hold is, zal de functie 2 teruggeven, enzovoort.

In deze tutorial hebt u geleerd hoe u de MySQL ORDER BY-clausule kunt gebruiken om rijen in de resultatenset op een of meer kolommen in oplopende of aflopende volgorde te sorteren.

  • Was deze tutorial nuttig?
  • JaNee

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *