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.