Sıralama Yapmak - MySQL Komutları

Sıralama Yapmak

SELECT sütunlar FROM tablo_adı ve varsa koşulları WHERE koşul şeklinde yazdıktan sonra ORDER sütun_adı ile listenin neye göre sıralanacağını belirtiriz.

Aşağıdaki verilere sahip bir "uyeler" tablomuz olduğunu düşünürsek:

SQL Kodu

SELECT * FROM uyeler;

+----+-------+-----+
| id | isim  | yas |
+----+-------+-----+
| 1  | Ali   | 39  |
| 2  | Gözde | 28  |
| 3  | Sevim | 24  |
| 4  | Ayşe  | 32  |
| 5  | Halil | 48  |
| 6  | Ece   | 24  |
+----+-------+-----+
Sıralamanın -farklı bir kural belirtilmemişse- kayıt sırasına göre yapıldığını görebiliriz. Bu listeyi yaşa göre sıralamak istersek sorgunun sonuna ORDER BY yas ekleriz:


   

Dikkat edilirse 24 yaşında iki üye var. Fakat Sevim'in kayıt numarası daha küçük olduğundan yukarıda görünüyor. Bu durumda ikinci bir sıralamada dikkat edilecek husus belirtmek istersek virgül koyarak diğer geçerli sütun adını yazarız:

SQL Kodu

SELECT * FROM uyeler ORDER BY yas;

+----+-------+-----+
| id | isim  | yas |
+----+-------+-----+
| 3  | Sevim | 24  |
| 6  | Ece   | 24  |
| 2  | Gözde | 28  |
| 4  | Ayşe  | 32  |
| 1  | Ali   | 39  |
| 5  | Halil | 48  |
+----+-------+-----+
Nitekim bu örnekte eğer "yas" sütunundaki veriler eşitse dikkat edilecek ikinci sütunun "isim" sütunu olacağını bildirdik. Yaptığımız 3 örnekte de sıralamanın sayılarda küçükten büyüğe, harflerde alfabetik olarak listelendiğini gördük. Eğer bu durumun tersini yapmak istiyorsak sütun adından sonra DESC eki getirmemiz yeterlidir. Örneğin yaşı büyükten küçüğe sıralayacak olursak:

SQL Kodu

SELECT * FROM uyeler ORDER BY yas DESC, isim;

+----+-------+-----+
| id | isim  | yas |
+----+-------+-----+
| 5  | Halil | 48  |
| 1  | Ali   | 39  |
| 4  | Ayşe  | 32  |
| 2  | Gözde | 28  |
| 6  | Ece   | 24  |
| 3  | Sevim | 24  |
+----+-------+-----+

Sonuçları Sınırlamak (LIMIT)

SELECT, FROM, WHERE, ORDER gibi kullanacağımız ne varsa kullandıktan sonra en son olarak sorgunun kaç kayıt göstereceğini öğrenmeye geldi. Normalde LIMIT baslangic, adet belirtilmemişse ilgili tüm kayıtlar listelenecektir. Aşağıdaki sorguda sadece ilk 3 kaydı göstermesini LIMIT kullanarak sağladık:

SQL Kodu

SELECT * FROM uyeler
   ORDER BY yas DESC, isim
   LIMIT 0, 3;

+----+-------+-----+
| id | isim  | yas |
+----+-------+-----+
| 5  | Halil | 48  |
| 1  | Ali   | 39  |
| 4  | Ayşe  | 32  |
+----+-------+-----+
LIMIT'te belirttiğimiz ilk değer başlangıç değeridir, kurala uyan sonuçlar bu sıradakinden başlar. Sonraki değer ise kaç adet kayıt gösterileceğidir.