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
ANYlà "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
ALLlà "đú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