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

SQL सर्वर कुछ ऑपरेटर ने समझाया

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


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. SQL सर्वर में लॉजिकल ऑपरेटर के बीच क्या है - SQL सर्वर / TSQL ट्यूटोरियल पार्ट 124

  2. प्रोएक्टिव SQL सर्वर स्वास्थ्य जांच, भाग 3:उदाहरण और डेटाबेस सेटिंग्स

  3. एसक्यूएल डॉट नोटेशन

  4. तालिका पंक्तियों को संपादित करके SQL सर्वर तालिका में पंक्तियों को कैसे सम्मिलित करें GUI - SQL सर्वर / TSQL ट्यूटोरियल भाग 101

  5. SQL सर्वर के लिए डेटा जनरेटर?