- Konu sahibi
- #1
SQL’de sorgu sonuçlarını belirli bir sütuna göre sıralamak için
Örneğin
Burada
En yüksek fiyatlı ürünleri önce görmek için sıralama yönünü
Aynı sütun için kullanacağınız ifade, istediğiniz sonucun yönüne göre değişir:
Birden fazla sütun kullanıldığında SQL önce ilk sütuna, aynı değere sahip satırlar arasında ikinci sütuna bakar. Örneğin ürünleri önce kategori adına göre, aynı kategorideki ürünleri de fiyata göre sıralamak için:
Bu sorguda kategoriler artan sırada listelenir. Aynı kategoriye ait ürünler arasında yüksek fiyatlı olanlar önce görünür. Sıralama önceliği soldan sağa doğru ilerler; bu nedenle ifadelerin sırası sonucu doğrudan etkiler.
Yalnızca en pahalı birkaç ürünü almak istiyorsanız,
Önce fiyatlar azalan sırada düzenlenir, ardından ilk beş satır alınır.
SQL Server kullanıyorsanız benzer işlem için
Kullandığınız veritabanı sistemi
Sıralama beklediğiniz gibi görünmüyorsa önce
ORDER BY kullanılır. Sütun adını bu ifadenin ardından yazın; küçükten büyüğe veya A’dan Z’ye sıralama için ASC, büyükten küçüğe veya Z’den A’ya sıralama için DESC belirtin. Sıralama yönü yazılmazsa çoğu SQL sisteminde varsayılan olarak artan sıralama uygulanır.ORDER BY ile temel sıralama
Örneğin
urunler tablosundaki ürünleri fiyata göre düşükten yükseğe listelemek için şu sorguyu çalıştırabilirsiniz:
SQL:
SELECT id, urun_adi, fiyat
FROM urunler
ORDER BY fiyat ASC;
Burada
SELECT görüntülenecek sütunları seçer, FROM urunler verinin hangi tablodan alınacağını belirtir, ORDER BY fiyat ASC ise sonuçları fiyat sütununa göre artan sırada düzenler. Sonuç kümesinde en düşük fiyatlı ürünler önce görünür.En yüksek fiyatlı ürünleri önce görmek için sıralama yönünü
DESC yapın:
SQL:
SELECT id, urun_adi, fiyat
FROM urunler
ORDER BY fiyat DESC;
DESC kullanıldığında büyük sayılar önce gelir. Metin sütunlarında ise sıralama, veritabanının kullandığı karakter sıralama kurallarına bağlı olarak alfabetik düzende yapılır.Artan ve azalan sıralama arasındaki fark
Aynı sütun için kullanacağınız ifade, istediğiniz sonucun yönüne göre değişir:
| İfade | Sonuç |
|---|---|
| ORDER BY fiyat ASC | Düşük fiyatlar önce gelir. |
| ORDER BY fiyat DESC | Yüksek fiyatlar önce gelir. |
| ORDER BY urun_adi ASC | Ürün adları artan karakter sırasına göre listelenir. |
| ORDER BY urun_adi DESC | Ürün adları ters yönde listelenir. |
ASC ve DESC, veriyi değiştirmez; yalnızca sorgunun döndürdüğü satırların gösterim sırasını belirler. Sıralanmış sonucu kalıcı hâle getirmek için ayrıca bir tabloya yazma veya başka bir işlem gerekir.Birden fazla sütuna göre sıralama
Birden fazla sütun kullanıldığında SQL önce ilk sütuna, aynı değere sahip satırlar arasında ikinci sütuna bakar. Örneğin ürünleri önce kategori adına göre, aynı kategorideki ürünleri de fiyata göre sıralamak için:
SQL:
SELECT urun_adi, kategori, fiyat
FROM urunler
ORDER BY kategori ASC, fiyat DESC;
Bu sorguda kategoriler artan sırada listelenir. Aynı kategoriye ait ürünler arasında yüksek fiyatlı olanlar önce görünür. Sıralama önceliği soldan sağa doğru ilerler; bu nedenle ifadelerin sırası sonucu doğrudan etkiler.
Sıralamayı sınırlamak ve sonucu kontrol etmek
Yalnızca en pahalı birkaç ürünü almak istiyorsanız,
ORDER BY ifadesini satır sınırlandırma özelliğiyle birlikte kullanabilirsiniz. PostgreSQL ve MySQL gibi sistemlerde örnek kullanım şöyledir:
SQL:
SELECT urun_adi, fiyat
FROM urunler
ORDER BY fiyat DESC
LIMIT 5;
Önce fiyatlar azalan sırada düzenlenir, ardından ilk beş satır alınır.
LIMIT kullanılmadan önce sıralama yapılması önemlidir; aksi hâlde alınan beş satır en pahalı ürünleri temsil etmeyebilir.SQL Server kullanıyorsanız benzer işlem için
TOP kullanılabilir:
SQL:
SELECT TOP 5 urun_adi, fiyat
FROM urunler
ORDER BY fiyat DESC;
Kullandığınız veritabanı sistemi
LIMIT, TOP veya başka bir sözdizimi gerektirebilir. Ancak sütuna göre sıralamanın temel yapısı ORDER BY sütun_adi ASC veya ORDER BY sütun_adi DESC biçimindedir.Sıralama beklediğiniz gibi görünmüyorsa önce
ORDER BY içinde doğru sütun adının kullanıldığını, sütunun veri tipinin uygun olduğunu ve birden fazla sıralama ölçütü varsa öncelik sırasını kontrol edin. Sayı gibi görünen değerler metin türünde tutuluyorsa karakter sıralaması uygulanabilir; bu durumda sütunun veri tipini ve dönüşüm gerekip gerekmediğini incelemeniz gerekir.