दिलचस्प पोस्ट
यूट्यूब वीडियो से बिट दर की जानकारी कैसे प्राप्त करें? क्या मुझे एक उपयोगकर्ता ने संशोधित सभी फाइलों को बताएगा? क्या स्तर पर MongoDB ताला लिखता है? (या: "प्रति कनेक्शन" इसका क्या अर्थ है क्या मैं jQuery के तत्वों पर बाध्य होने वाली घटनाओं को ढूंढ सकता हूं? टॉमकेट सर्वर एसटीएस में सर्वर और एप्लिकेशन को शुरू करने में विफल रहता है ब्राउज़र कुकी डोमेन कैसे काम करते हैं? हम लॉगरर्स को स्थिर फाइनल क्यों घोषित करते हैं? कैसे RecyclerView के साथ अंतहीन सूची को लागू करने के लिए? दो आज्ञाओं को चलाने के दौरान पायथन दुर्घटनाग्रस्त (सेगमेंटेशन फॉल्ट: 11) Excel सूत्रों में दोहरे उद्धरण वाले स्ट्रिंग कैसे बनाएं? PHP में टाइमस्टैम्प की तारीख कैसे परिवर्तित करें? Android में किसी अन्य गतिविधि को कॉल करने पर एनीमेशन कैसे प्रदान करें? बाश में हैश टेबल कैसे परिभाषित करें? अनुसूचित NSTimer जब ऐप पृष्ठभूमि में है? स्ट्रिंग का उपयोग करके पायथन में श्वेतस्थान निकालें। Whitespace

एसक्यूएल नहीं काम नहीं कर रहा है

मेरे पास दो डाटाबेस हैं, जो एक सूची रखता है, और दूसरा जो प्राथमिक डाटाबेस के रिकॉर्ड का एक सबसेट है

निम्नलिखित SQL कथन काम नहीं कर रहा है:

SELECT stock.IdStock ,stock.Descr FROM [Inventory].[dbo].[Stock] stock WHERE stock.IdStock NOT IN (SELECT foreignStockId FROM [Subset].[dbo].[Products]) 

नहीं में काम नहीं करता है NOT को हटाने से सही परिणाम मिलते हैं, यानी उत्पाद जो दोनों डेटाबेस में हैं हालांकि, NOT IN का उपयोग किसी भी परिणाम को बिल्कुल नहीं लौटा रहा है।

क्या मैं गलत कर रहा हूँ, किसी भी विचार?

वेब के समाधान से एकत्रित समाधान "एसक्यूएल नहीं काम नहीं कर रहा है"

 SELECT foreignStockId FROM [Subset].[dbo].[Products] 

शायद एक NULL देता है

यदि कोई NULL मूल्यों की सूची में मौजूद नहीं है तो क्वेरी में कोई भी पंक्तियां वापस नहीं लौटेंगी। आप स्पष्ट रूप से उन्हें नीचे IS NOT NULL रूप में IS NOT NULL का उपयोग कर बाहर कर सकते हैं

 SELECT stock.IdStock, stock.Descr FROM [Inventory].[dbo].[Stock] stock WHERE stock.IdStock NOT IN (SELECT foreignStockId FROM [Subset].[dbo].[Products] WHERE foreignStockId IS NOT NULL) 

या इसके बजाय NOT EXISTS का उपयोग फिर से लिखना

 SELECT stock.idstock, stock.descr FROM [Inventory].[dbo].[Stock] stock WHERE NOT EXISTS (SELECT * FROM [Subset].[dbo].[Products] p WHERE p.foreignstockid = stock.idstock) 

साथ ही साथ उन शब्दों का प्रयोग करना चाहते हैं जो आप चाहते हैं कि NOT EXISTS लिए निष्पादन योजना अक्सर यहां जितनी सरल दिखाई देती है ।

व्यवहार में अंतर के लिए कारण एसक्यूएल में इस्तेमाल तीन मूल्यवान तर्क के नीचे है। पूर्वानुमान True , False , या Unknown मूल्यांकन कर सकते हैं

WHERE एक पंक्ति लौटाई गई है, उसके लिए एक True का True मूल्यांकन होना चाहिए, लेकिन नीचे बताए अनुसार बताए गए NULL NOT IN यह संभव नहीं है।

'A' NOT IN ('X','Y',NULL) 'A' <> 'X' AND 'A' <> 'Y' AND 'A' <> NULL) बराबर 'A' <> 'X' AND 'A' <> 'Y' AND 'A' <> NULL)

  • 'ए' <> 'एक्स' = True
  • 'ए' <> 'वाई' = True
  • 'ए' <> नल = Unknown

True AND True AND Unknown तीन मूल्यवान तर्क के लिए सत्य तालिकाओं के अनुसार True AND True AND Unknown मूल्यांकन करता है।

निम्नलिखित लिंक के पास विभिन्न विकल्पों के प्रदर्शन के बारे में कुछ अतिरिक्त चर्चा है।

  • क्या मुझे उपयोग में NOT IN , OUTER APPLY , LEFT OUTER JOIN , आगे NOT EXISTS , या NOT EXISTS ?
  • NOT IN बनाम बनाम। NOT EXISTS बनाम NOT EXISTS LEFT JOIN / IS NULL : SQL सर्वर
  • Left outer join NOT EXISTS
  • NOT EXISTS बनाम

यदि IN में काम नहीं करता है, तो आप हमेशा LEFT JOIN करने का प्रयास कर सकते हैं। फिर WHERE द्वारा फ़िल्टर की गयी तालिका में से किसी एक का उपयोग करके फ़िल्टर करें, जो नल हैं । बशर्ते, आपके द्वारा शामिल किए गए मूल्य में कोई भी शून्य मान शामिल नहीं है