आप ALL
का उपयोग करना चाहते हैं , नहीं ANY
. बढ़िया मैनुअल से:
9.21.3. कोई/कुछ (सरणी)
expression operator ANY (array expression)
[...] बाएं हाथ की अभिव्यक्ति का मूल्यांकन किया जाता है और दिए गए ऑपरेटर का उपयोग करके सरणी के प्रत्येक तत्व की तुलना की जाती है। , जो एक बूलियन परिणाम देना चाहिए। ANY
. का परिणाम यदि कोई सही परिणाम प्राप्त होता है तो "सत्य" होता है।
तो अगर हम यह कहते हैं:
1 != any(array[1,2])
तब हम (1 != 1) or (1 != 2)
. के बाद से सच हो जाएंगे सच हैं। ANY
अनिवार्य रूप से एक OR
है ऑपरेटर। उदाहरण के लिए:
=> select id from (values (1),(2),(3)) as t(id) where id != any(array[1,2]);
id
----
1
2
3
(3 rows)
अगर हम ALL
को देखें तो , हम देखते हैं:
9.21.4. सभी (सरणी)
expression operator ALL (array expression)
[...] बाएं हाथ की अभिव्यक्ति का मूल्यांकन किया जाता है और दिए गए ऑपरेटर का उपयोग करके सरणी के प्रत्येक तत्व की तुलना की जाती है। , जो एक बूलियन परिणाम देना चाहिए। ALL
. का परिणाम "सच" है अगर सभी तुलनाएं सच होती हैं...
तो अगर हम यह कहते हैं:
1 != all(array[1,2])
तब हम (1 != 1) and (1 != 2)
. के बाद से असत्य प्राप्त करेंगे गलत है और हम देखते हैं कि ALL
अनिवार्य रूप से एक AND
है ऑपरेटर। उदाहरण के लिए:
=> select id from (values (1),(2),(3)) as t(id) where id != all(array[1,2]);
id
----
3
(1 row)
यदि आप किसी सरणी में सभी मानों को बाहर करना चाहते हैं, तो ALL
का उपयोग करें :
select "Ticket_id"
from "Tickets"
where "Status" = 1
and "Ticket_id" != all(array[1,2,3])
limit 6