We weten dat SQL SELECT Statement de rijen in geen bepaalde volgorde retourneert. Met behulp van de ORDER BY-clausule kunnen we de rijen in een gewenste volgorde zetten. ORDER BY-clausule wordt gebruikt om de geretourneerde records in een volgorde te sorteren. Door ORDER BY te gebruiken, kunnen we het resultaat in oplopende of aflopende volgorde sorteren. Deze clausule kan ook voor meerdere kolommen worden gebruikt.
ORDER BY Syntax
SELECT column_name1, column_name2, column_name3.... FROM table_nameWHERE Condition ORDER BY column_name1, column_name2, .... (ASC OR DESC);
Hier wordt ASC gebruikt voor sorteren in oplopende volgorde en DESC voor aflopende volgorde.
SQL ORDER BY clausule voorbeeld
Laten we zeggen dat we een tabel “STUDENT” hebben met de volgende records.
+---------+----------+-----+-----------+----------+| ROLL_NO | NAME | AGE | BRANCH | CITY |+---------+----------+-----+-----------+----------+| 10001 | Kate | 22 | CSE | Mumbai || 10002 | Richard | 21 | ECE | Delhi || 10003 | Rick | 33 | ME | Chennai || 10004 | Peter | 26 | CSE | Delhi || 10005 | Steve | 22 | CSE | Noida || 10006 | Mark | 22 | ECE | Jaipur || 10007 | Brad | 23 | ME | Rampur |+---------+----------+-----+-----------+----------+
Het volgende SQL statement zal alle records uit de tabel “STUDENT” ophalen en de teruggestuurde rijen zullen in oplopende volgorde van studentleeftijd zijn.
SELECT * FROM STUDENTORDER BY AGE;
Note: De standaard sorteervolgorde is oplopend, dus de rijen worden gesorteerd op basis van de kolom “LEEFTIJD”, ook al hebben we het ASC-sleutelwoord niet gebruikt in de order by-clausule. Het is dus veilig om te zeggen dat de volgende query hetzelfde is als de bovenstaande query en hetzelfde resultaat zou opleveren.
SELECT * FROM STUDENTORDER BY AGE ASC;
Resultaat:
+---------+----------+-----+-----------+----------+| ROLL_NO | NAME | AGE | BRANCH | CITY |+---------+----------+-----+-----------+----------+| 10002 | Richard | 21 | ECE | Delhi || 10001 | Kate | 22 | CSE | Mumbai || 10005 | Steve | 22 | CSE | Noida || 10006 | Mark | 22 | ECE | Jaipur || 10007 | Brad | 23 | ME | Rampur || 10004 | Peter | 26 | CSE | Delhi || 10003 | Rick | 33 | ME | Chennai |+---------+----------+-----+-----------+----------+
SQL ORDER BY DESC voorbeeld
Tabel: STUDENT
+---------+----------+-----+-----------+----------+| ROLL_NO | NAME | AGE | BRANCH | CITY |+---------+----------+-----+-----------+----------+| 10001 | Kate | 22 | CSE | Mumbai || 10002 | Richard | 21 | ECE | Delhi || 10003 | Rick | 33 | ME | Chennai || 10004 | Peter | 26 | CSE | Delhi || 10005 | Steve | 22 | CSE | Noida || 10006 | Mark | 22 | ECE | Jaipur || 10007 | Brad | 23 | ME | Rampur |+---------+----------+-----+-----------+----------+
De volgende SQL-instructie haalt de namen van de studenten op uit de tabel “STUDENT” en de geretourneerde namen worden gesorteerd in aflopende volgorde (we hebben DESC gebruikt voor aflopende volgorde in de ORDER BY-clausule).
SELECT NAME FROM STUDENTORDER BY NAME DESC;
Resultaat:
+----------+| NAME | +----------+| Steve | | Rick | | Richard | | Peter | | Mark | | Kate | | Brad | +----------+
Zoals u kunt zien, hebben we een lijst met studentennamen die in aflopende volgorde zijn gesorteerd.
SQL ORDER BY Meerdere Kolommen
In de bovenstaande voorbeelden hebben we de sortering op basis van een enkele kolom uitgevoerd. We kunnen echter meerdere kolommen gebruiken in de ORDER BY-clausule.
Wanneer meerdere kolommen worden gebruikt in ORDER BY, worden eerst de rijen gesorteerd op basis van de eerste kolom en vervolgens op basis van de tweede kolom. Laten we een voorbeeld nemen om dit te begrijpen.
Tabel: EMPLOYEE
EMP_ID EMP_NAME COUNTRY CITY PINCODE------ -------- ------- ---- -------1001 Paul India Noida 2013101005 Raul India Agra 2831261002 Ajeet India Noida 2013011003 Jon India Agra 2820081006 David India Agra 2820051004 Chetan India Noida 201313
Sorteer de rijen eerst op basis van de stad en dan binnen elke stad op pincode:
SELECT * FROM EMPLOYEEORDER BY CITY, PINCODE;
Resultaat:
Zoals u kunt zien zijn de rijen gesorteerd op CITY en vervolgens binnen de stad gesorteerd op pincode.
EMP_ID EMP_NAME COUNTRY CITY PINCODE------ -------- ------- ---- -------1006 David India Agra 2820051003 Jon India Agra 2820081005 Raul India Agra 2831261002 Ajeet India Noida 2013011001 Paul India Noida 2013101004 Chetan India Noida 201313
Sorteer de rijen eerst op basis van de stad in oplopende volgorde en dan binnen elke stad op pincode in aflopende volgorde:
SELECT * FROM EMPLOYEEORDER BY CITY ASC, PINCODE DESC;
Resultaat:
Zoals u kunt zien zijn de rijen gesorteerd op CITY in oplopende volgorde en dan binnen de stad in omgekeerde volgorde op pincode gesorteerd.
EMP_ID EMP_NAME COUNTRY CITY PINCODE------ -------- ------- ---- -------1005 Raul India Agra 2831261003 Jon India Agra 2820081006 David India Agra 2820051004 Chetan India Noida 2013131001 Paul India Noida 2013101002 Ajeet India Noida 201301