MySQL Select Where In – Listede olma Koşulu
Aynı bilgi alanın içinde birden fazla değer aranacaksa IN operatörü kullanılabilir.
Bunu IN kullanmadan bir örnek verelim.
Örnek: Adi; Ahmet, Canan, Burak, Bahar olanların adını ve soyadını görüntüleyen SQL ifadesini yazınız.
MariaDB [obs]> select adi,soyadi from ogrenci -> where adi="Ahmet" and adi="Canan" and adi="Burak" and adi="Bahar"; Empty set (0.000 sec)
Aynı alan içinde sorgulanacağı için bir kişi olarak düşünelim, o kişinin adı hem Ahmet , hem Canan hem de Burak olamaz. Burada AND bağlacı değil OR bağlacı kullanılmaydı. Ahmet veya Canan veya … şeklinde olmalıydı.
Örneğimizin uzun ve doğru olan cevabı ise
MariaDB [obs]> select adi,soyadi from ogrenci -> where adi="Ahmet" or adi="Canan" or adi="Burak" or adi="Bahar" -> ; +-------+---------+ | adi | soyadi | +-------+---------+ | Canan | Demirel | +-------+---------+ 1 row in set (0.001 sec)
Burada verilen bilgiler (Ahmet, Canan, Burak, …) hepsinin Adı alanında arandığı için IN bağlacı kullanılabilir, biraz daha SQL ifademiz kısalacaktır.
IN bağlacı
MariaDB [obs]> select adi,soyadi -> from ogrenci -> where adi in ('ahmet','canan','burak','Bahar'); +-------+---------+ | adi | soyadi | +-------+---------+ | Canan | Demirel | +-------+---------+ 1 row in set (0.001 sec)
Örnek: Adinin ilk harfi A, K, L, C veya Y olanların adını görüntüleyen SQL ifadesi,
MariaDB [obs]> select adi from ogrenci where left(adi,1) in ('A','K','L','C','Y'); +-------+ | adi | +-------+ | Ayşe | | Canan | | Yahya | +-------+ 3 rows in set (0.001 sec)
Soru: where left(‘Dilşat’,1) in (‘A’,’L’,’İ’);
cevabı Evet mi, Hayır mı
Soru: where left(‘Dilşat’,1) in (‘A’,’L’,’D’);
cevabı Evet mi, Hayır mı