Bu makalede, MySQL ORDER BY yan tümcesini kullanarak bir sonuç kümesindeki satırları nasıl sıralayacağınızı öğreneceksiniz.
Bir tablodan veri sorgulamak için SELECT deyimini kullandığınızda, sonuç kümesindeki satırların sırası belirtilmez. Sonuç kümesindeki satırları sıralamak için SELECT deyimine ORDER BY yan tümcesini eklersiniz.
Aşağıda ORDER BY yan tümcesinin sözdizimi gösterilmektedir.
1 2 3 4 5 6 7 8 9 10 | SELECT sütunlar FROM tablo adı ORDER BY column1 [ASC|DESC], column2 [ASC|DESC], ...; |
Bu sözdiziminde, ORDER BY yan tümcesinden sonra sıralamak istediğiniz bir veya daha fazla sütunu belirtirsiniz.
ASC artan, DESC ise azalan anlamına gelir. Sonuç kümesini artan düzende sıralamak için ASC’yi ve sonuç kümesini azalan düzende sıralamak için DESC’yi kullanırsınız.
Bu ORDER BY yan tümcesi, sütun1‘deki değerler tarafından ayarlanan sonucu artan düzende sıralar:
1 2 3 | ORDER BY sütun1 ASC; |
Ve bu ORDER BY yan tümcesi ise, sütun1‘deki değerler tarafından ayarlanan sonucu azalan düzende sıralar:
1 2 3 | ORDER BY sütun1 DESC; |
Varsayılan olarak, herhangi bir seçeneği açıkça belirtmezseniz ORDER BY yan tümcesi ASC’yi kullanır. Bu nedenle, aşağıdaki ORDER BY yan tümceleri eşdeğerdir:
1 2 3 | ORDER BY sütun1 ASC; |
ve
1 2 3 | ORDER BY sütun1; |
Sonuç kümesini birden çok sütuna göre sıralamak istiyorsanız, ORDER BY yan tümcesinde virgülle ayrılmış bir sütun listesi belirtirsiniz:
1 2 3 4 5 | ORDER BY sütun1 ASC, sütun2 DESC; |
Bu durumda, ORDER BY deyimi:
- İlk olarak, sütun1’deki değerlere göre ayarlanan sonucu artan düzende sıralayın.
- Ardından, sütun2’deki değerlere göre sıralanan sonucu azalan düzende sıralayın. Bu adımda sütun1’deki değerlerin sırasının değişmeyeceğini, yalnızca sütun2’deki değerlerin sırasının değişeceğini unutmayın.
Bir ORDER BYyan tümcesi ileSELECTifadesini yürütürken, MySQL her zaman ORDER BY yan tümcesini FROM ve SELECT yan tümcelerinden sonra değerlendirir.

MySQL ORDER BY Örnekleri
Örnekler için vtornek veritabanındaki customers tablosunu kullanacağız.
Örnek Veritabanını indirmek için buraya tıklayın.

Örnek 1: Aşağıdaki sorgu, müşterileri soyadlarına göre artan düzende sıralamak için ORDER BY yan tümcesini kullanır.
1 2 3 4 5 6 7 8 9 | SELECT contactLastname, contactFirstname FROM customers ORDER BY contactLastname; |
Ekran Çıktısı:

Örnek 2: Müşterileri soyadına göre azalan düzende sıralamak istiyorsanız, aşağıdaki sorguda gösterildiği gibi ORDER BY yan tümcesindeki contactLastname sütunundan sonra DESC’yi kullanırsınız:

Örnek 3:
Müşterileri soyadına göre azalan düzende ve ardından ada göre artan düzende sıralamak istiyorsanız, bu ilgili sütunlarda hem DESC hem de ASC’yi aşağıdaki gibi belirtirsiniz:
1 2 3 4 5 6 7 8 9 10 | SELECT contactLastname, contactFirstname FROM customers ORDER BY contactLastname DESC , contactFirstname ASC; |

Bu örnekte, ORDER BY yan tümcesi, nihai sonuç kümesini yapmak için önce soyadına göre sonuç kümesini azalan düzende sıralar ve ardından firstname tarafından sıralanan sonuç kümesini artan düzende sıralar.
Örnek 4: Aşağıdaki sorgu, orderdetails
tablosundan sipariş satır öğelerini seçer. Her satır öğesi için ara toplamı hesaplar ve sonuç kümesini ara toplama göre sıralar.
Kullanacağımız tablo alanları aşağıdaki gibidir.

1 2 3 4 5 6 7 8 9 10 | SELECT orderNumber, orderlinenumber, quantityOrdered * priceEach FROM orderdetails ORDER BY quantityOrdered * priceEach DESC; |

Sorguyu daha okunabilir hale getirmek için, SELECT yan tümcesindeki ifadeye bir sütun diğer adı atayabilir ve aşağıdaki sorguda gösterildiği gibi ORDER BY yan tümcesinde bu sütun diğer adını kullanabilirsiniz:
1 2 3 4 5 6 7 8 9 | SELECT orderNumber, orderLineNumber, quantityOrdered * priceEach AS subtotal FROM orderdetails ORDER BY subtotal DESC; |

Bu örnekte, quantityOrdered * priceEach ifadesi için sütun takma adı olarak subtotal (ara toplamı) kullanıyoruz ve sonuç kümesini ara toplam takma adına göre sıralıyoruz.
MySQL, SELECT yan tümcesini ORDER BY yan tümcesinden önce değerlendirdiğinden, ORDER BY yan tümcesindeki SELECT yan tümcesinde belirtilen sütun diğer adını kullanabilirsiniz.
Not: MySQL’de NULL, NULL olmayan değerlerden önce gelir. Bu nedenle, ASC seçeneğiyle ORDER BY yan tümcesini kullandığınızda, sonuç kümesinde önce NULL’lar görünür.
Örnek: employee tablosunda reportsTo sütununa göre artan sıralama yapalım.

Eğer tablonuzda bulunan boş alanları görüntülemek isterseniz yukarıdaki şekilde bir sıralama yapabilirsiniz.
Özet
- Sonuç kümesini bir veya daha fazla sütuna göre sıralamak için ORDER BY yan tümcesini kullanın.
- Sonuç kümesini artan düzende sıralamak için ASCseçeneğini ve sonuç kümesini azalan düzende sıralamak için DESC seçeneğini kullanın.
- ORDER BY deyimi, FROM ve SELECT yan tümcelerinden sonra değerlendirilir.
- MySQL’de NULL, NULL olmayan değerlerden daha önce gelir.