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ı

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ı