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

एसक्यूएल सर्वर 2008 प्रबंधन स्टूडियो मेरी क्वेरी के सिंटैक्स की जांच नहीं कर रहा है

यह hs_id . का मान ले रहा है बाहरी क्वेरी से।

यह पूरी तरह से एक क्वेरी के लिए मान्य है जो चयनित तालिका से किसी भी कॉलम को अपने select में प्रोजेक्ट नहीं करता है सूची।

उदाहरण के लिए

select 10 from HotelSupplier where id = 142

where . से मेल खाने वाली कई पंक्तियों के साथ परिणाम सेट लौटाएगा खंड और मान 10 सभी पंक्तियों के लिए।

अयोग्य कॉलम संदर्भों को निकटतम दायरे से बाहर की ओर हल किया जाता है, इसलिए इसे केवल एक सहसंबद्ध उप क्वेरी के रूप में माना जाता है।

इस क्वेरी का परिणाम Photo . से सभी पंक्तियों को हटाना होगा जहां hs_id तब तक रिक्त नहीं है जब तक HotelSupplier में कम से कम एक पंक्ति है जहां id =142 (और इसलिए सबक्वेरी कम से कम एक पंक्ति लौटाती है)

यह थोड़ा स्पष्ट हो सकता है यदि आप विचार करें कि इसका क्या प्रभाव है

delete from Photo  where Photo.hs_id  in (select Photo.hs_id)

यह निश्चित रूप से

. के बराबर है
delete from Photo where Photo.hs_id = Photo.hs_id

वैसे यह सबसे आम "बग" दूर और दूर है जिसे मैंने व्यक्तिगत रूप से माइक्रोसॉफ्ट कनेक्ट पर गलत तरीके से रिपोर्ट किया है। Erland Somarskog ने इसे SET STRICT_CHECKS ON के लिए अपनी इच्छा सूची में शामिल किया है



  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 सर्वर रिपोर्टिंग सेवाओं में Salesforce.com डेटा के साथ कार्य करना

  2. कमांड प्रॉम्प्ट से SQL सर्वर डेटाबेस को पुनर्स्थापित करने की पूरी प्रक्रिया

  3. SQL सर्वर के साथ Lucene.Net कॉन्फ़िगर करें

  4. SQL सर्वर में दिनांक और समय के साथ कार्य करते समय समस्याओं का निवारण

  5. MS SQL सर्वर डेटाबेस में स्वचालित अनुक्रमणिका डीफ़्रेग्मेंटेशन