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

SQL सर्वर में "केवल एक अभिव्यक्ति को चयन सूची में निर्दिष्ट किया जा सकता है ..." को कैसे ठीक करें?

SQL सर्वर में, त्रुटि संदेश 116 तब होता है जब आप किसी सबक्वेरी में एक से अधिक स्तंभों को EXISTS के साथ प्रस्तुत किए बिना चुनने का प्रयास करते हैं ऑपरेटर।

पूरी त्रुटि इस तरह दिखती है:

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.

उदाहरण

यहां एक क्वेरी का उदाहरण दिया गया है जो इस त्रुटि को उत्पन्न करती है।

SELECT 
    CatId,
    CatName
FROM Cats c 
WHERE c.CatName IN (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.

इस क्वेरी के साथ समस्या यह है कि सबक्वेरी एक तारक का उपयोग करता है (* ) Dogs . से सभी स्तंभों का चयन करने के लिए टेबल। उस तालिका में कई स्तंभ हैं, और इसलिए त्रुटि उत्पन्न होती है।

त्रुटि कैसे ठीक करें

हम उपरोक्त त्रुटि को कुछ तरीकों से ठीक कर सकते हैं।

इसे ठीक करने का एक तरीका तारक (* .) को बदलना है ) सबक्वेरी में एक कॉलम नाम के साथ:

SELECT 
    CatId,
    CatName
FROM Cats c 
WHERE c.CatName IN (SELECT DogName FROM Dogs);

इसका मतलब है कि सबक्वेरी अब टेबल के सभी कॉलम के बजाय सिर्फ एक कॉलम लौटाती है।

इसे ठीक करने का दूसरा तरीका यह है कि वह करें जो त्रुटि संदेश सुझाता है और EXISTS . का उपयोग करें IN . के बजाय ऑपरेटर ।

ऐसा करने के लिए क्वेरी के निर्माण में थोड़ी भिन्नता की आवश्यकता होती है:

SELECT 
    CatId,
    CatName
FROM Cats c 
WHERE EXISTS (SELECT * FROM Dogs d
WHERE c.CatName = d.DogName);

जैसा कि आप उम्मीद कर सकते हैं, EXISTS ऑपरेटर भी काम करेगा, भले ही आप केवल एक कॉलम को स्पष्ट रूप से बताएं:

SELECT 
    CatId,
    CatName
FROM Cats c 
WHERE EXISTS (SELECT DogName FROM Dogs d
WHERE c.CatName = d.DogName);

लेकिन इसके विपरीत IN ऑपरेटर, EXISTS यदि आप सबक्वायरी में स्पष्ट रूप से एकाधिक कॉलम नामों का चयन करते हैं तो भी काम करेगा:

SELECT 
    CatId,
    CatName
FROM Cats c 
WHERE EXISTS (SELECT DogId, DogName FROM Dogs d
WHERE c.CatName = d.DogName);


  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 सर्वर कुछ ऑपरेटर ने समझाया

  2. SQL सर्वर के साथ अद्यतन के लिए चुनें

  3. SQL सर्वर में अल्पविराम से अलग की गई सूची को पंक्तियों में कैसे बदलें

  4. मैं SQL सर्वर क्वेरी में तालिका संरचना कैसे दिखा सकता हूं?

  5. कई संग्रहीत कार्यविधियों के परिणाम UNION