Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर किसी भी ऑपरेटर ने समझाया

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 . का उपयोग करें ।


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. TSQL और GUI का उपयोग करके डेटाबेस कैसे छोड़ें - SQL सर्वर / TSQL ट्यूटोरियल भाग 25

  2. SQL सर्वर 2008 में एलपीएडी

  3. आप कैसे निर्धारित करते हैं कि SQL टेबल्स में प्रोग्रामेटिक रूप से पहचान कॉलम क्या है?

  4. SQL सर्वर में EXISTS लॉजिकल ऑपरेटर का उपयोग कैसे करें - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 125

  5. किसी कॉलम को जोड़ने/समाप्त करने के लिए ग्रुप बाय