SQL - Sonuçları SIRALAMA

SQL ORDER BYcümlesi, verileri bir veya daha fazla sütuna göre artan veya azalan düzende sıralamak için kullanılır. Bazı veritabanları, sorgu sonuçlarını varsayılan olarak artan bir sırada sıralar.

Sözdizimi

Sonucu artan veya azalan düzende sıralamak için kullanılacak ORDER BY yan tümcesinin temel sözdizimi aşağıdaki gibidir -

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

ORDER BY yan tümcesinde birden fazla sütun kullanabilirsiniz. Sıralamak için kullandığınız sütunun, sütun listesinde olması gerektiğinden emin olun.

Misal

Aşağıdaki kayıtlara sahip MÜŞTERİLER tablosunu düşünün -

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

Aşağıda, sonucu artan sırada AD ve MAAŞ'a göre sıralayacak bir örnek verilmiştir.

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

Bu, aşağıdaki sonucu verecektir -

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

Aşağıdaki kod bloğunun, sonucu NAME göre azalan bir sırada sıralayan bir örneği vardır.

SQL> SELECT * FROM CUSTOMERS
   ORDER BY NAME DESC;

Bu, aşağıdaki sonucu verecektir -

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

Satırları kendi tercih ettikleri sırayla getirmek için, kullanılan SELECT sorgusu aşağıdaki gibi olacaktır -

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;

Bu, aşağıdaki sonucu verecektir -

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

Bu, müşterileri adresinizdeki ADDRESS'e göre sıralayacaktır. ownoOrderönce ve kalan adresler için doğal bir sırada. Ayrıca, kalan Adresler ters alfabetik sıraya göre sıralanacaktır.