बढ़ाने ALL/ANYजवाब
मैं उन सभी समाधानों को पसंद करता हूं जो अतिरिक्त नोट्स (जैसे NULL s के लिए) की सराहना करते हुए उपयोग करते हैं allया anyपरिणाम प्राप्त करते हैं । एक और आश्रय के रूप में, यहाँ उन ऑपरेटरों के बारे में सोचने का एक तरीका है।
आप उनके बारे में शॉर्ट-सर्किट ऑपरेटरों के रूप में सोच सकते हैं :
all(array)सरणी में सभी मानों के माध्यम से जाता है, प्रत्येक को दिए गए ऑपरेटर का उपयोग करके संदर्भ मान से तुलना करता है। जैसे ही तुलना की जाती है false, प्रक्रिया झूठी, अन्यथा सच होती है। (शॉर्ट-सर्किट तार्किक के लिए तुलनीय and।)
any(array)सरणी में सभी मानों के माध्यम से जाता है, प्रत्येक को दिए गए ऑपरेटर का उपयोग करके संदर्भ मान से तुलना करता है। जैसे ही तुलना की जाती है true, प्रक्रिया सच के साथ समाप्त होती है, अन्यथा झूठ। (शॉर्ट-सर्किट तार्किक के लिए तुलनीय or।)
यही कारण है कि 3 <> any('{1,2,3}')वांछित परिणाम नहीं मिलता है: प्रक्रिया असमानता के लिए 1 के साथ 3 की तुलना करती है, जो सच है, और तुरंत सच हो जाता है। 3 से भिन्न सरणी में एक एकल मान पूरी स्थिति को सत्य बनाने के लिए पर्याप्त है। अंतिम सरणी स्थिति में 3 संभावित है। कभी प्रयोग नहीं हुआ।
3 <> all('{1,2,3}')दूसरी ओर यह सुनिश्चित करता है कि सभी मूल्य समान नहीं हैं। 3. यह सभी तुलनाओं के माध्यम से चलेगा, जो एक ऐसे तत्व तक सही है, जो समग्र परिणाम के रूप में झूठे (इस मामले में अंतिम) प्राप्त करता है। यही ओपी चाहता है।
WHERE 3 NOT IN recipient_idsकाम करता है ?