SQL सर्वर में, आप SOME
. का उपयोग कर सकते हैं तार्किक ऑपरेटर एक सबक्वेरी द्वारा लौटाए गए मानों के एकल-स्तंभ सेट के साथ स्केलर मान की तुलना करने के लिए।
इसका उपयोग उन सबक्वेरी के साथ किया जा सकता है जिनमें एक कॉलम का परिणाम सेट होता है।
SOME
ऑपरेटर ANY
. के बराबर है तार्किक संचालिका।
उदाहरण
कल्पना कीजिए कि हमारे पास दो टेबल हैं; Cats
और Dogs
बिल्लियाँ
+---------+-----------+ | CatId | CatName | |---------+-----------| | 1 | Meow | | 2 | Fluffy | | 3 | Scratch | +---------+-----------+
कुत्ते
+---------+-----------+ | DogId | DogName | |---------+-----------| | 1 | Fetch | | 2 | Fluffy | | 3 | Wag | +---------+-----------+
अब ANY
. का उपयोग करके एक सबक्वेरी चलाते हैं ऑपरेटर।
SELECT
CatId,
CatName
FROM Cats c
WHERE c.CatName = SOME (SELECT DogName FROM Dogs);
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 2 | Fluffy | +---------+-----------+
SOME
बनाम ANY
जैसा कि बताया गया है, SOME
ANY
. के बराबर है ।
इसलिए हम ANY
. का उपयोग करने के लिए अपनी क्वेरी को बदल सकते हैं SOME
. के बजाय ।
SELECT
CatId,
CatName
FROM Cats c
WHERE c.CatName = ANY (SELECT DogName FROM Dogs);
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 2 | Fluffy | +---------+-----------+
SOME
बनाम IN
हमें वही परिणाम मिलेगा यदि हम क्वेरी को चारों ओर से बदल दें ताकि यह IN
. का उपयोग करे SOME
. के बजाय ऑपरेटर ।
यहाँ यह IN
. का उपयोग कर रहा है ऑपरेटर।
SELECT
CatId,
CatName
FROM Cats c
WHERE c.CatName IN (SELECT DogName FROM Dogs);
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 2 | Fluffy | +---------+-----------+
SOME
बनाम EXISTS
हम EXISTS
. के साथ भी ऐसा ही कर सकते हैं ऑपरेटर।
यहाँ यह EXISTS
. का उपयोग कर रहा है ऑपरेटर।
SELECT
CatId,
CatName
FROM Cats c
WHERE EXISTS (SELECT DogId, DogName FROM Dogs d
WHERE c.CatName = d.DogName);
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 2 | Fluffy | +---------+-----------+
त्रुटि 116?
यदि आपको SOME
. का उपयोग करते समय त्रुटि 116 मिलती है , ऐसा शायद इसलिए है क्योंकि आप अपनी सबक्वेरी में एकाधिक कॉलम का चयन कर रहे हैं। SOME
ऑपरेटर का उपयोग केवल उन सबक्वेरी के साथ किया जा सकता है जिनमें एक कॉलम का परिणाम सेट होता है।
हम इस त्रुटि का कारण कैसे बन सकते हैं, इसका एक उदाहरण यहां दिया गया है।
SELECT
CatId,
CatName
FROM Cats c
WHERE c.CatName = SOME (SELECT * FROM Dogs);
परिणाम:
Msg 116, Level 16, State 1, Line 5 Only one expression can be specified in the select list when the subquery is not introduced with EXISTS.
हमें IN
. के साथ भी यही त्रुटि मिलेगी . अगर आपको अपनी सबक्वायरी में कई कॉलम वापस करने हैं, तो EXISTS
. का उपयोग करें ।