SQL में, IN
ऑपरेटर आपको मानों की सूची के आधार पर अपने क्वेरी परिणामों को फ़िल्टर करने की अनुमति देता है।
आप इसका उपयोग किसी सबक्वेरी द्वारा लौटाए गए किसी भी मान से मेल खाने के लिए भी कर सकते हैं (एक सबक्वेरी एक क्वेरी है जो किसी अन्य क्वेरी के अंदर नेस्टेड है)।
स्रोत तालिकाएं
इस पृष्ठ पर उदाहरणों के लिए निम्नलिखित तालिकाओं का उपयोग किया जाता है।
SELECT * FROM PetTypes;
SELECT * FROM Pets;
परिणाम:
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 1 | Bird | | 2 | Cat | | 3 | Dog | | 4 | Rabbit | +-------------+-----------+ (4 rows affected) +---------+-------------+-----------+-----------+------------+ | PetId | PetTypeId | OwnerId | PetName | DOB | |---------+-------------+-----------+-----------+------------| | 1 | 2 | 3 | Fluffy | 2020-11-20 | | 2 | 3 | 3 | Fetch | 2019-08-16 | | 3 | 2 | 2 | Scratch | 2018-10-01 | | 4 | 3 | 3 | Wag | 2020-03-15 | | 5 | 1 | 1 | Tweet | 2020-11-28 | | 6 | 3 | 4 | Fluffy | 2020-09-17 | | 7 | 3 | 2 | Bark | NULL | | 8 | 2 | 4 | Meow | NULL | +---------+-------------+-----------+-----------+------------+ (8 rows affected)
उदाहरण
IN
को प्रदर्शित करने के लिए यहां एक उदाहरण दिया गया है ऑपरेटर।
SELECT
PetId,
PetName,
DOB
FROM Pets
WHERE PetName IN ('Fluffy', 'Bark', 'Wag');
परिणाम:
+---------+-----------+------------+ | PetId | PetName | DOB | |---------+-----------+------------| | 1 | Fluffy | 2020-11-20 | | 4 | Wag | 2020-03-15 | | 6 | Fluffy | 2020-09-17 | | 7 | Bark | NULL | +---------+-----------+------------+
हम दो OR
. का उपयोग करके एक ही परिणाम प्राप्त कर सकते हैं ऑपरेटर:
SELECT
PetId,
PetName,
DOB
FROM Pets
WHERE PetName = 'Fluffy'
OR PetName = 'Bark'
OR PetName = 'Wag';
हालांकि, IN
ऑपरेटर इसे करने का एक संक्षिप्त तरीका है। IN
ऑपरेटर विशेष रूप से फायदेमंद होता है जब आपके पास मूल्यों की एक लंबी सूची होती है जिसके खिलाफ तुलना की जा सकती है।
IN
ऑपरेटर लगभग हमेशा एक से अधिक OR
. की तुलना में जल्दी निष्पादित करता है ऑपरेटरों, विशेष रूप से बड़े डेटा सेट पर।
संख्यात्मक मान
मान केवल तार तक सीमित नहीं हैं। उदाहरण के लिए, आप IN
. का उपयोग कर सकते हैं संख्यात्मक मानों की सूची पर।
SELECT
PetId,
PetName,
DOB
FROM Pets
WHERE PetId IN (1, 3, 5);
परिणाम:
+---------+-----------+------------+ | PetId | PetName | DOB | |---------+-----------+------------| | 1 | Fluffy | 2020-11-20 | | 3 | Scratch | 2018-10-01 | | 5 | Tweet | 2020-11-28 | +---------+-----------+------------+
तारीख
यहां एक उदाहरण दिया गया है जो तिथियों की सूची का उपयोग करता है।
SELECT
PetId,
PetName,
DOB
FROM Pets
WHERE DOB IN (
'2020-11-20',
'2018-10-01',
'2015-10-01'
);
परिणाम:
+---------+-----------+------------+ | PetId | PetName | DOB | |---------+-----------+------------| | 1 | Fluffy | 2020-11-20 | | 3 | Scratch | 2018-10-01 | +---------+-----------+------------+
IN
का उपयोग करना सबक्वेरी के साथ
IN
. का एक अन्य लाभ ऑपरेटर, यह है कि इसमें एक और SELECT
हो सकता है सूची। इसे सबक्वायरी . के रूप में जाना जाता है . एक सबक्वेरी एक क्वेरी है जो किसी अन्य क्वेरी (या किसी अन्य सबक्वेरी) के अंदर नेस्ट की जाती है।
यहां एक उदाहरण दिया गया है।
SELECT
PetTypeId,
PetType
FROM PetTypes
WHERE PetTypeId IN ( SELECT PetTypeId FROM Pets );
परिणाम:
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 1 | Bird | | 2 | Cat | | 3 | Dog | +-------------+-----------+
यह उदाहरण हमें दिखाता है कि हमारे पालतू होटल में कितने प्रकार के पालतू जानवर हैं।
NOT IN
का उपयोग करना
हम NOT
जोड़ सकते हैं ऑपरेटर को इसे इधर-उधर करने के लिए और देखें कि कितने पालतू प्रकार हैं नहीं हमारे पालतू होटल में।
SELECT
PetTypeId,
PetType
FROM PetTypes
WHERE PetTypeId NOT IN ( SELECT PetTypeId FROM Pets );
परिणाम:
+-------------+-----------+ | PetTypeId | PetType | |-------------+-----------| | 4 | Rabbit | +-------------+-----------+
इस मामले में, हमारे डेटाबेस में एक पालतू प्रकार का Rabbit
. होता है , लेकिन वर्तमान में हमारे पास पालतू जानवर के रूप में कोई खरगोश नहीं है।
अभिव्यक्ति
प्रदान किए गए मान अभिव्यक्तियों की एक सूची है। इसलिए, आप इस तरह की चीजें कर सकते हैं:
SELECT
PetId,
PetName,
DOB
FROM Pets
WHERE PetId IN (1, 3, 2 + 3);
परिणाम:
+---------+-----------+------------+ | PetId | PetName | DOB | |---------+-----------+------------| | 1 | Fluffy | 2020-11-20 | | 3 | Scratch | 2018-10-01 | | 5 | Tweet | 2020-11-28 | +---------+-----------+------------+