SQL सर्वर में, आप ANY
का उपयोग कर सकते हैं तार्किक ऑपरेटर एक सबक्वेरी द्वारा लौटाए गए मानों के एकल-स्तंभ सेट के साथ स्केलर मान की तुलना करने के लिए।
इसका उपयोग उन सबक्वेरी के साथ किया जा सकता है जिनमें एक कॉलम का परिणाम सेट होता है।
ANY
ऑपरेटर SOME
. के बराबर है तार्किक संचालिका।
उदाहरण
मान लें कि हमारे पास दो टेबल हैं; 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 = ANY (SELECT DogName FROM Dogs);
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 2 | Fluffy | +---------+-----------+
ANY
बनाम SOME
हमें वही परिणाम मिलेगा यदि हम क्वेरी को चारों ओर से बदल दें ताकि यह SOME
. का उपयोग करे ANY
. के बजाय ऑपरेटर ।
यहाँ यह SOME
. का उपयोग कर रहा है ANY
. के बजाय ऑपरेटर ।
SELECT
CatId,
CatName
FROM Cats c
WHERE c.CatName = SOME (SELECT DogName FROM Dogs);
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 2 | Fluffy | +---------+-----------+
ANY
बनाम IN
हम IN
. का भी उपयोग कर सकते हैं एक ही परिणाम प्राप्त करने के लिए ऑपरेटर।
SELECT
CatId,
CatName
FROM Cats c
WHERE c.CatName IN (SELECT DogName FROM Dogs);
परिणाम:
+---------+-----------+ | CatId | CatName | |---------+-----------| | 2 | Fluffy | +---------+-----------+
ANY
बनाम 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?
यदि आपको ANY
. का उपयोग करते समय त्रुटि 116 मिलती है , ऐसा शायद इसलिए है क्योंकि आप अपनी सबक्वेरी में एकाधिक कॉलम का चयन कर रहे हैं। ANY
ऑपरेटर का उपयोग केवल उन सबक्वेरी के साथ किया जा सकता है जिनमें एक कॉलम का परिणाम सेट होता है।
हम इस त्रुटि का कारण कैसे बन सकते हैं, इसका एक उदाहरण यहां दिया गया है।
SELECT
CatId,
CatName
FROM Cats c
WHERE c.CatName = ANY (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.
इस अर्थ में, ANY
ऑपरेटर IN
. के समान है ऑपरेटर की तुलना में यह EXISTS
. है ऑपरेटर। हमें IN
. के साथ भी यही त्रुटि मिलेगी .
अगर आपको अपनी सबक्वायरी में कई कॉलम वापस करने हैं, तो EXISTS
. का उपयोग करें ।