WHERE ifadesi içinde birden fazla değeri koşul olarak belirlemek istediğimizde IN (içinde) anahtar sözcüğünü kullanırız. Daha iyi anlamak için hemen örneklere geçelim.
Örnekler için aşağıdaki personel tablosunu kullanacağız.
Not: Bu arada diğer SQL derslerine buradan ulaşabilirsiniz
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 |
Sorgu: Yaşı 22, 23, 25, 26 sayılarından birine eşit olanlar.
SELECT * FROM personel WHERE yas IN (22, 23, 25, 26)
veya
SELECT * FROM personel WHERE yas=22 OR yas=23 OR yas=25 OR yas=26
Her iki sorgunun da çıktısı aşağıdaki gibi olacaktır:
per_no | isim | soyisim | yas | cinsiyet | kent | ulke | maas |
---|---|---|---|---|---|---|---|
2 | Mehmet | Efe | 22 | E | Bolu | Türkiye | 1800 |
3 | Ayşe | Can | 23 | K | İstanbul | Türkiye | 2500 |
9 | Abbas | Demir | 26 | E | Adana | Türkiye | 1500 |
10 | Hatice | Yılmaz | 26 | K | İstanbul | Türkiye | 3000 |
Görüldüğü gibi iki sorgu aynı işi yapıyor. Ancak OR ile yazdığımız sorgu daha uzun ve karışık görünüyor. Ancak In işlecinin tek faydası sağladığı bu pratiklik değil. Gerisini ileriki konulara havale edelim.
Sorgu: İsimleri Ahmet veya Mehmet olan personel
SELECT * FROM personel WHERE isim IN ('Ahmet', 'Mehmet')
veya
SELECT * FROM personel WHERE isim='Ahmet' OR isim= 'Mehmet'
Her iki sorgunun da çıktısı aşağıdaki gibi olacaktır:
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 |
İsim, soyisim gibi metin değerleri yukarıdaki gibi tek tırnak içerisinde yazmayı unutmayın.
Herkese Kolay Gelsin
05 Ocak 2010 at 07:19
İnternette şahit olduğum en anlaşılabilir SQL yazılarını blogunuzda okudum. Çok teşekkür ederim. Devamınında gelmesini hem umut, hem de rica ediyorum. Çalışmalarınızda başarılar dilerim.
22 Ocak 2010 at 16:43
Güzel anlatım. Örnekler gayet açıklayıcı.
22 Haziran 2010 at 17:32
eyw.çok güzel anlatım olmuş.
15 Nisan 2011 at 12:18
Hocam harika olmuş.Allah razı olsun.
17 Nisan 2015 at 06:05
FROM TABLO1
WHERE (TABLO1.vhs_carikod =
(SELECT cari_1.kod AS carikod
FROM dbo.cari AS cari_1 INNER JOIN
dbo.w_cari_adres_HIZLI ON cari_1.kod = dbo.w_cari_adres_HIZLI.cari_kod WHERE (dbo.w_cari_adres_HIZLI.adr_no IS NULL))
iç içe sorguları nasıl yapıyoruz. mesela ADRES NOSU NULL OLAN CARİLERİ LİSTELEMEK İSTİYORUM.
15 Mayıs 2015 at 03:47
iç içe sorgularla ilgili bir yazı yok maalesef. Kısa vadede yazabileceğimi de sanmıyorum.
07 Kasım 2015 at 05:00
Emeğinize sağlık hocam çok teşekkürler 🙂