SQL - SORTOWANIE wyników

SQL ORDER BYKlauzula służy do sortowania danych w kolejności rosnącej lub malejącej na podstawie jednej lub większej liczby kolumn. Niektóre bazy danych domyślnie sortują wyniki zapytania w kolejności rosnącej.

Składnia

Podstawowa składnia klauzuli ORDER BY, która byłaby używana do sortowania wyniku w porządku rosnącym lub malejącym, jest następująca -

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

W klauzuli ORDER BY można użyć więcej niż jednej kolumny. Upewnij się, że niezależnie od kolumny, której używasz do sortowania, ta kolumna powinna znajdować się na liście kolumn.

Przykład

Rozważ tabelę CUSTOMERS zawierającą następujące rekordy -

+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+

Poniżej znajduje się przykład, który posortowałby wynik w kolejności rosnącej według NAZWISKA i PŁATNOŚCI.

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

Dałoby to następujący wynik -

+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+

Poniższy blok kodu zawiera przykład, który posortowałby wynik w kolejności malejącej według nazwy.

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME DESC;

Dałoby to następujący wynik -

+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+

Aby pobrać wiersze z ich własną preferowaną kolejnością, użyte zapytanie SELECT wyglądałoby następująco:

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;

Dałoby to następujący wynik -

+----+----------+-----+-----------+----------+
| 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 |
+----+----------+-----+-----------+----------+

To posortuje klientów według ADRESU w Twoim ownoOrderpierwszeństwo w pierwszej kolejności iw naturalnej kolejności dla pozostałych adresów. Pozostałe adresy zostaną posortowane w odwrotnej kolejności alfabetycznej.