SQL IN ve NOT IN, SQL’de kimi zaman where koşullarında belirttiğimiz alan için birden çok değer içerisinde arama yapma ihtiyacımız olabilir. Bu değerler arasında herhangi bir değer ile eşleşme sağlanırsa kaydın listelenmesini sağlarız. Bu gibi durumlar için kullanabileceğiniz bir çok farklı senaryo var ama biz in ve not in ile bu işlemi nasıl gerçekleştirebileceğimize gözatacağız.
Örnek KIMLIK Tablosu
Makalede kullanacağımız örnek KIMLIK tablosu şu şekildedir.
Create Script’i
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | CREATE TABLE KIMLIK ( ID INT PRIMARY KEY, AD NVARCHAR(255) NOT NULL, TUR NVARCHAR(50) NOT NULL --Kullanıcı Türü Admin | Kullanici ) INSERT INTO KIMLIK(ID, AD, TUR) VALUES(1, 'Murat', 'Admin') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(2, 'Hakan', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(3, 'Sakine', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(4, 'Birol', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(5, 'Erdem', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(6, 'Burak', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(7, 'Kasım', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(8, 'Mücahit', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(9, 'Muhammet', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(10, 'Emrah', 'Kullanici') INSERT INTO KIMLIK(ID, AD, TUR) VALUES(11, 'Baran', 'Kullanici') |
Örnek Data
Normalde IN
kullanmadığımız durumda Kimlik diye bir tablomuz olduğunu düşünelim ve Ad alanında 'Murat', 'Muhammed', 'Hakan'
Adındaki kişileri süzerek sonuç almak istediğimizde yazılması gereken SQL Cümlesi;
1 | SELECT * FROM KIMLIK K WHERE K.AD = 'Murat' Or K.AD = 'Muhammed' Or k.AD = 'Hakan' |
Üstteki kodda gördüğünüz üzere 3 değer için 3 farklı koşul ekledik. Bu sayı eğer 3 değilde 100,1000 ve daha fazla olsaydı bu durumda herhalde 100 defa yada 1000 defa koşul eklemeyecektik bu durumda IN operatörü imdadımıza yetişiyor. O zaman hemen IN operatörü ile bu 3 değer için nasıl tek koşulda kontrol sağlayabiliriz bakalım.
Ama IN
operatörü ile ikinci or ifadesini kullanmadan yukarıda yazdığımız 3 isme ait sonuca ulaşabiliriz. Örnek IN sql cümlesi ise şu şekildedir;
1 | SELECT * FROM KIMLIK K WHERE K.AD IN ('Murat', 'Muhammed', 'Hakan') |
Sözdizimi olarak sürekli
OR
keyword’ünü ardarda dizip kod tekrarı yapmak okunaklığı ve anlaşılabilirliği oldukça azaltmaktadır. O yüzdenIN
operatörünü bu gibi durumlarda kullanmak daha uygun olacaktır. Hele ki 3 seçenek içinde değilde yüzlerce yada binlerce seçeneğin herbiri içinOR
keyword’ünü kullanmak neredeyse imkansız olacaktır.
Üstteki komutta In komutu kullanarak KIMLIK tablosu içerisindeki AD alanında “Murat, Muhammet ve Hakan” ismindeki kişilerin listelenmesini sağladık. Şimdiki örneğimizde tam tersi bir durum olsun “Murat, Muhammet ve Hakan” dışındaki diğer tüm isimlere sahip kayıtların listelenmesini sağlayalım.
1 | SELECT * FROM KIMLIK K WHERE K.AD NOT IN ('Murat', 'Muhammed', 'Hakan') |
SQL IN ve NOT IN Benzer Konuları
- Exists ve Not Exists İfadelerinin Kullanımı
- Sql Server COALESCE İfadesi Kullanımı
- SQL NULLIF Fonksiyonu Nedir ve Nasıl Kullanılır
- Sql Server NOCOUNT Komutu Kullanımı
- Sql Between Nedir? Nasıl Kullanılır?
- SQL ile tabloların listesi nasıl alınır?
- SQL İl ve İlçe Verisi – 2021 – Güncel
- DevDocs İle Programlama Dilleri Api’lerine Tek Siteden Erişme Rahatlığı
📚 SQL IN ve NOT IN Kaynakları
✍ Lütfen olumlu-olumsuz tüm görüşlerinizi bana yorum yada mail yolu ile iletmeyi ihmal etmeyin.
🔗 Sosyal medya kanallarından makaleyi paylaşarak destek olursanız çok sevinirim.
👋 Bir sonraki makalede görüşmek dileğiyle.
Emeğinize sağlık