SQL - SORTIEREN von Ergebnissen

Die SQL ORDER BYKlausel wird verwendet, um die Daten in aufsteigender oder absteigender Reihenfolge basierend auf einer oder mehreren Spalten zu sortieren. Einige Datenbanken sortieren die Abfrageergebnisse standardmäßig in aufsteigender Reihenfolge.

Syntax

Die grundlegende Syntax der ORDER BY-Klausel, mit der das Ergebnis in aufsteigender oder absteigender Reihenfolge sortiert wird, lautet wie folgt:

SELECT column-list 
FROM table_name 
[WHERE condition] 
[ORDER BY column1, column2, .. columnN] [ASC | DESC];

Sie können mehr als eine Spalte in der ORDER BY-Klausel verwenden. Stellen Sie sicher, dass sich jede Spalte, die Sie zum Sortieren verwenden, in der Spaltenliste befindet.

Beispiel

Betrachten Sie die Tabelle CUSTOMERS mit den folgenden Datensätzen:

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
+----+----------+-----+-----------+----------+

Das folgende Beispiel zeigt das Ergebnis in aufsteigender Reihenfolge nach NAME und SALARY.

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME, SALARY;

Dies würde das folgende Ergebnis erzeugen -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

Der folgende Codeblock enthält ein Beispiel, das das Ergebnis in absteigender Reihenfolge nach NAME sortiert.

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME DESC;

Dies würde das folgende Ergebnis erzeugen -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
+----+----------+-----+-----------+----------+

Um die Zeilen mit ihrer eigenen bevorzugten Reihenfolge abzurufen, wird folgende SELECT-Abfrage verwendet:

SQL> SELECT * FROM CUSTOMERS
   ORDER BY (CASE ADDRESS
   WHEN 'DELHI' 	 THEN 1
   WHEN 'BHOPAL' 	 THEN 2
   WHEN 'KOTA' 	 THEN 3
   WHEN 'AHMEDABAD' THEN 4
   WHEN 'MP' 	THEN 5
   ELSE 100 END) ASC, ADDRESS DESC;

Dies würde das folgende Ergebnis erzeugen -

+----+----------+-----+-----------+----------+
| ID | NAME     | AGE | ADDRESS   | SALARY   |
+----+----------+-----+-----------+----------+
|  2 | Khilan   |  25 | Delhi     |  1500.00 |
|  5 | Hardik   |  27 | Bhopal    |  8500.00 |
|  3 | kaushik  |  23 | Kota      |  2000.00 |
|  6 | Komal    |  22 | MP        |  4500.00 |
|  4 | Chaitali |  25 | Mumbai    |  6500.00 |
|  7 | Muffy    |  24 | Indore    | 10000.00 |
|  1 | Ramesh   |  32 | Ahmedabad |  2000.00 |
+----+----------+-----+-----------+----------+

Dadurch werden die Kunden nach ADRESSE in Ihrem sortiert ownoOrderbevorzugt zuerst und in einer natürlichen Reihenfolge für die verbleibenden Adressen. Außerdem werden die verbleibenden Adressen in umgekehrter alphabetischer Reihenfolge sortiert.