Met ORDER BY commando van SQL kunt u zoek­re­sul­ta­ten sorteren op basis van uw in­di­vi­du­e­le behoeften, in oplopende of aflopende volgorde. Door de gegevens in uw doeltabel te sorteren in rijen en kolommen, worden uw re­sul­ta­ten dui­de­lij­ker en beter leesbaar. Dat op­ti­ma­li­seert en versnelt op zijn beurt uw ge­ge­vens­ana­ly­ses en query’s in complexe ge­ge­vens­sets.

Wat is SQL ORDER BY?

U kunt SQL ORDER BY gebruiken om gegevens en re­sul­ta­ten uit een­vou­di­ge of complexe datasets te sorteren. Met deze opdracht kunt u bepalen hoe gegevens in de doeltabel worden ge­rang­schikt. Bovendien kunt u aangeven of gegevens in oplopende of aflopende volgorde moeten worden ge­sor­teerd. Zo helpt ORDER BY om query­re­sul­ta­ten te leveren die duidelijk en ge­mak­ke­lijk te lezen zijn.

Standaard levert ORDER BY re­sul­ta­ten in oplopende volgorde, dat wil zeggen van A tot Z of van de kleinste naar de grootste waarde. Als u de voorkeur geeft aan re­sul­ta­ten in aflopende volgorde, kunt u het optionele trefwoord DESC gebruiken. U kunt één of meerdere doel­ko­lom­men voor de re­sul­ta­ten de­fi­ni­ë­ren.

SQL ORDER BY is be­lang­rijk voor het uitvoeren van ge­or­ga­ni­seer­de, snelle query’s. Het wordt vaak gebruikt met SELECT, WHERE en andere SQL-ope­ra­to­ren en -functies zoals GROUP BY.

Tip

Wilt u SQL beter begrijpen, maar weet u niet waar u moet beginnen? Onze inleiding tot SQL met voor­beel­den maakt het ge­mak­ke­lijk om deze populaire da­ta­ba­se­taal te leren.

Wat is de syntaxis van SQL ORDER BY?

De syntaxis van SQL ORDER BY ziet er als volgt uit:

SELECT  ColumnA, ColumnB, …  or *
FROM  Table
ORDER BY  ColumnA, ColumnB, …  (optional: ASC or DESC)
sql
Opmerking

Als u slechts één kolom invoert na ORDER BY, krijgt u één kolom met ge­sor­teer­de re­sul­ta­ten. Als u meer dan één kolom invoert, worden de re­sul­ta­ten ge­sor­teerd op basis van kolom A. Als kolom A in sommige rijen identieke ver­mel­din­gen bevat, worden die rijen ge­sor­teerd op basis van kolom B.

U kunt deze syntaxis uit­brei­den met verdere ope­ra­to­ren en pa­ra­me­ters. Een WHERE kan bij­voor­beeld worden gebruikt om criteria te de­fi­ni­ë­ren die uw zoek­re­sul­ta­ten verfijnen. De syntaxis van ORDER BY in com­bi­na­tie met WHERE ziet er als volgt uit:

SELECT  ColumnA, ColumnB, …  or *
FROM  Table
WHERE  ColumnA  =  'SearchCondition'
ORDER BY  ColumnA, ColumnB, …  (optional: ASC or DESC)
sql

U kunt ook de volgende pa­ra­me­ters gebruiken:

  • SELECT: U kunt SELECT gebruiken om aan te geven welke gegevens u wilt ana­ly­se­ren. Gebruik een asterisk * om de volledige dataset op te vragen of voer de namen van kolommen in om met die kolommen te werken.
  • FROM: Geeft aan uit welke tabel u gegevens wilt opvragen.
  • WHERE: WHERE is een optionele clausule voor het de­fi­ni­ë­ren van zoek­cri­te­ria die uw re­sul­ta­ten verfijnen. Binnen een WHERE kunt u ope­ra­to­ren zoals =, LIKE of NOT gebruiken.
  • ORDER BY: Bepaalt op basis van welke kolom u uw re­sul­ta­ten wilt sorteren. Als u ASC of DESC niet toevoegt, worden de re­sul­ta­ten standaard in oplopende volgorde ge­sor­teerd.
Opmerking

Af­han­ke­lijk van de database sorteert ORDER BY NULL-waarden au­to­ma­tisch of op basis van de ge­se­lec­teer­de sor­teer­volg­or­de. In SQLite, MySQL en SQL Server worden NULL-waarden behandeld als de laagste waarden. Dat betekent dat ze aan het begin van oplopende re­sul­ta­ten ver­schij­nen. In Oracle en Post­greSQL worden NULL-waarden behandeld als de hoogste waarden. Ze ver­schij­nen dus aan het einde van oplopende re­sul­ta­ten.

Waarvoor kan SQL ORDER BY worden gebruikt?

Hier zijn enkele prak­ti­sche ge­bruiks­sce­na­rio’s voor SQL ORDER BY:

  • Pro­duct­in­for­ma­tie sorteren op pro­duct­naam, categorie of prijs
  • Trans­ac­ties sorteren op basis van bedrag, datum of naam
  • Be­stel­lin­gen sorteren op basis van bedrag of be­oor­de­lin­gen
  • Sorteren van werk­ne­mers op basis van salaris, con­trac­ten, pres­ta­ties of afdeling
  • Voorraad weergeven op basis van hoe­veel­heid of naam
  • Ver­zen­din­gen sorteren op postcode of trac­king­num­mer
  • Klan­ten­lijs­ten sorteren op regio of leeftijd

Voor­beel­den van SQL ORDER BY

We gaan nu kijken naar 3 voor­beel­den met ORDER BY.

Producten sorteren op prijs

In dit voorbeeld sorteren we producten uit de categorie ‘Haar’ in oplopende volgorde op basis van prijs. We gebruiken FROM en WHERE om aan te geven welke items we willen sorteren. Met ORDER BY en ASC geven we aan dat we ze in oplopende volgorde op basis van prijs willen sorteren. De syntaxis ziet er als volgt uit:

SELECT  *
FROM  Products
WHERE  Category  = 'Hair'
ORDER BY  Price  ASC;
sql

Klanten filteren

Stel dat u werkt in een tabel met de naam ‘Klanten’ en dat u alle klanten uit het Verenigd Ko­nink­rijk op naam wilt sorteren. U wilt ze in om­ge­keer­de al­fa­be­ti­sche volgorde sorteren, van Z naar A, dus voegt u DESC toe aan het commando ORDER BY.

SELECT  *
FROM  Customers
WHERE  Country = 'UK'
ORDER BY  Name  DESC;
sql

Sorteren op basis van meerdere ca­te­go­rie­ën

In dit voorbeeld wilt u producten uit de categorie ‘Elek­tro­ni­ca’ sorteren op basis van de be­stel­hoe­veel­heid. Als de be­stel­hoe­veel­he­den identiek zijn, wilt u ze sorteren op basis van het land waar de be­stel­ling vandaan komt.

SELECT  *
FROM  Products
WHERE  Category  =  'Electronics'
ORDER BY  OrderQuantity ASC,  Country  DESC;
sql

Zijn er al­ter­na­tie­ven voor SQL ORDER BY?

Er zijn geen al­ter­na­tie­ven voor ORDER BY in SQL met dezelfde functie. GROUP BY is echter een SQL-opdracht die vaak in com­bi­na­tie met ORDER BY wordt gebruikt. GROUP BY kan worden gebruikt om records op basis van ca­te­go­rie­ën te groeperen en ORDER BY kan die records bovendien sorteren.

Een voorbeeld: stel dat u de be­stel­hoe­veel­he­den van klanten wilt groeperen op basis van land en ver­vol­gens de ag­gre­ga­tie­func­tie AVG wilt gebruiken om te sorteren op basis van de ge­mid­del­de be­stel­hoe­veel­heid. De syntaxis daarvoor zou er als volgt uitzien:

SELECT  Country, AVG(OrderQuantity)
FROM  Customers
WHERE  Category = 'Electronics'
GROUP BY  Country
ORDER BY  AVG(OrderQuantity) ASC;
sql

U kunt ook een HAVING-clausule gebruiken om de ge­sor­teer­de records te filteren op basis van zoek­cri­te­ria en voor­waar­den. LIMIT kan worden gebruikt om de re­sul­ta­ten­set te beperken tot een bepaald aantal.

Ga naar hoofdmenu