SELECT sorgusu ile çektiğimiz kayıtları (sonuç kümesini) sıralamak için ORDER BY anahtar kelimesini kullanırız. Bu sıralama belirtilen kolona göre yapılır. Ve varsayılan olarak artan (küçükten büyüğe) sıradadır. ORDER BY için sözdizimi (syntax – sintaks) aşağıdaki gibidir:
SELECT kolon_adı(ları) FROM tablo_adı ORDER BY kolon_adı(ları) ASC|DESC
Burada sıralamanın azalan (büyükten küçüğe) şekilde olmasını istiyorsak DESC anahtar kelimesini kullanırız. Artan şekilde olması için ASC yazmamız veya hiç bir şey yazmamamız yeterlidir.
Not: Bu arada diğer SQL derslerine buradan ulaşabilirsiniz
Örnek sorgularımız için kullanacağımız Uyeler
tablosu:
uye_adi | isim | soyisim | e-posta | cinsiyet |
---|---|---|---|---|
hrzafer | Harun Reşit | Zafer | [email protected] | E |
derya.z | Derya | Zaimoğlu | [email protected] | K |
meryem1990 | Meryem | Arkadaş | [email protected] | K |
eaydin | Emir | Aydın | [email protected] | E |
denizeri | Levent | Denizeri | [email protected] | E |
SELECT isim, soyisim FROM uyeler ORDER BY isim
isim | soyisim |
---|---|
Derya | Zaimoğlu |
Emir | Aydın |
Harun Reşit | Zafer |
Levent | Denizeri |
Meryem | Arkadaş |
Görüldüğü gibi sonuç kümesi isim kolonuna küçükten büyüğe göre sıralandı.
SELECT isim, soyisim FROM uyeler ORDER BY soyisim DESC
isim | soyisim |
---|---|
Derya | Zaimoğlu |
Harun Reşit | Zafer |
Levent | Denizeri |
Emir | Aydın |
Meryem | Arkadaş |
Bu sorgu ile de sonuç kümesini soyisim kolonuna göre azalan (büyükten küçüğe) şekilde sıralamış olduk.
Aşağıdaki sorguyu da Personel tablomuz için yazalım:
per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
---|---|---|---|---|---|---|---|
1 | Ahmet | Yılmaz | 20 | E | Ankara | Türkiye | 2000 |
2 | Mehmet | Efe | 22 | E | Bolu | Türkiye | 1800 |
3 | Ayşe | Can | 23 | K | İstanbul | Türkiye | 2500 |
4 | Fatma | Ak | 35 | K | Ankara | Türkiye | 2800 |
5 | John | Smith | 45 | E | New York | ABD | 3500 |
6 | Ellen | Smith | 40 | K | New York | ABD | 3000 |
7 | Hans | Müller | 30 | E | Berlin | Almanya | 4000 |
8 | Frank | Cesanne | 35 | E | Paris | Fransa | 3700 |
9 | Abbas | Demir | 26 | E | Adana | Türkiye | 1500 |
10 | Hatice | Yılmaz | 26 | K | İstanbul | Türkiye | 3000 |
Erkeklerden Türkiye’de olanları aldıkları maaşa göre artan şekilde sıralayan sorgu:
SELECT * FROM personel WHERE cinsiyet='E' AND ulke='Türkiye' ORDER BY maas
per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
---|---|---|---|---|---|---|---|
9 | Abbas | Demir | 26 | E | Adana | Türkiye | 1500 |
2 | Mehmet | Efe | 22 | E | Bolu | Türkiye | 1800 |
1 | Ahmet | Yılmaz | 20 | E | Ankara | Türkiye | 2000 |
Görüldüğü gibi ORDER BY
anahtar kelimesi her zaman sorgunun sonuna geliyor. Çünkü sorgunun kendisi sonuç kümesini belirlerken ORDER BY
yalnızca bu sonuç kümesini sıralıyor.
Herkese Kolay Gelsin
16 Temmuz 2013 at 02:19
Sağolun hocam
25 Aralık 2013 at 15:31
hocam paylaşımlarınız için çok teşekkür ederim konuyu çok iyi özetlemişsiniz anlatım tarzınızda çok iyi başarılarınızın devamını dilerim 🙂
02 Ağustos 2014 at 22:28
klawyenize saglik, cok guzel anlatmisiniz… kisa ve oz olmus, kolay gelsin iyi calismalar….
14 Mayıs 2015 at 05:17
Hocam elinize sağlık güzel olmuş fakat bir yer kafama takıldı.
en son yaptığınız örnekte kod kısmında yazılan Türkiye yazısı(kırmızı) tırnak içindemi olur normalde?
15 Mayıs 2015 at 03:45
Evet, string değerler SQL’de tek tırnak içerisinde yazılırlar.
07 Aralık 2015 at 08:12
çok teşekkürler çok işime yaradı emeğinize saglık
21 Haziran 2016 at 08:00
karışık gelen ayları ocaktan aralığa sıralı nasıl getirebiliriz acaba? öyle fena takıldım ki bu konuya bir adım ilerleyemiyorum 🙁
21 Haziran 2016 at 08:06
Normalde bir aylar tablosu olur ve bu tabloda id değerleri ayların sırasına göre olur. {id:1 name:ocak} {id:2 name:şubat} gibi. Eğer böyle bir tablo yoksa siz oluşturabilirsiniz. Daha sonra da esas tablo ile bu tabloyu “name” alanı üzerinde join edersiniz ve OrderBy name dersiniz.
“Select * from tablo1, aylar where tablo1.ay = aylar.name orderBy name” veya
“Select * FROM taglo1 INNER JOIN aylar ON tablo1.ay=aylar.name orderBy name”
gibi
21 Haziran 2016 at 08:13
Çok teşekkür ederim. Kafamda kıvılcımları çaktınız. hemen işe koyulmalı 🙂
11 Temmuz 2017 at 01:58
Güne göre otomatik kayıt nasıl yaparız? Mesela ben bir alışveriş sitesi yaptım ve veritabanında fiyatlar değiştikçe eski fiyatı o tarihe göre kayıt etmesini istiyorum. Örn: 11.07.2017 de ürün fiyatı 23 TL ama 14.07.2017 de 20 TL ye düştü. Tekrar 15.07.2017 de 25 tl ye çıktı. Daha sonra o ürün için sorgu çalıştırdığım zaman o ürünün son 2 haftalık fiyat değişimini nasıl görürüm. Günlük fiyatları veritabanında nasıl saklarım ? Yardımcı olursanız çok müteşekkir olurum. Şimdiden teşekkür ederim.