Bạn muốn sử dụng ALL
, không phải ANY
. Từ hướng dẫn sử dụng tốt:
9.21.3. ANY / SOME (mảng)
Toán tử biểu thứcexpression operator ANY (array expression)
[...] Biểu thức bên trái được đánh giá và so sánh với từng phần tử của mảng bằng cách sử dụng toán tử đã cho , phải mang lại kết quả Boolean. Kết quả của
ANY
là "true" nếu nhận được bất kỳ kết quả true nào.
Vì vậy, nếu chúng ta nói điều này:
1 != any(array[1,2])
thì chúng ta sẽ nhận được true vì (1 != 1) or (1 != 2)
là đúng. ANY
về cơ bản là một OR
nhà điều hành. Ví dụ:
=> select id from (values (1),(2),(3)) as t(id) where id != any(array[1,2]);
id
----
1
2
3
(3 rows)
Nếu chúng ta nhìn vào ALL
, chúng tôi thấy:
9.21.4. TẤT CẢ (mảng)
expression operator ALL (array expression)
[...] Biểu thức bên trái được đánh giá và so sánh với từng phần tử của mảng bằng cách sử dụng toán tử đã cho , phải mang lại kết quả Boolean. Kết quả của
ALL
là "đúng" nếu tất cả các so sánh đều mang lại kết quả đúng ...
vì vậy nếu chúng ta nói điều này:
1 != all(array[1,2])
thì chúng ta sẽ nhận được sai vì (1 != 1) and (1 != 2)
là false và chúng tôi thấy rằng ALL
về cơ bản là một AND
nhà điều hành. Ví dụ:
=> select id from (values (1),(2),(3)) as t(id) where id != all(array[1,2]);
id
----
3
(1 row)
Nếu bạn muốn loại trừ tất cả các giá trị trong một mảng, hãy sử dụng ALL
:
select "Ticket_id"
from "Tickets"
where "Status" = 1
and "Ticket_id" != all(array[1,2,3])
limit 6