Anda ingin menggunakan ALL
, bukan ANY
. Dari manual yang bagus:
9.21.3. APAPUN/BEBERAPA (array)
expression operator ANY (array expression)
[...] Ekspresi sebelah kiri dievaluasi dan dibandingkan dengan setiap elemen larik menggunakan operator yang diberikan , yang harus menghasilkan hasil Boolean. Hasil dari
ANY
adalah "benar" jika diperoleh hasil yang benar.
Jadi jika kita mengatakan ini:
1 != any(array[1,2])
maka kita akan mendapatkan true karena (1 != 1) or (1 != 2)
adalah benar. ANY
pada dasarnya adalah OR
operator. Misalnya:
=> select id from (values (1),(2),(3)) as t(id) where id != any(array[1,2]);
id
----
1
2
3
(3 rows)
Jika kita melihat ALL
, kita melihat:
9.21.4. SEMUA (larik)
expression operator ALL (array expression)
[...] Ekspresi sebelah kiri dievaluasi dan dibandingkan dengan setiap elemen larik menggunakan operator yang diberikan , yang harus menghasilkan hasil Boolean. Hasil dari
ALL
adalah "benar" jika semua perbandingan menghasilkan benar...
jadi jika kita mengatakan ini:
1 != all(array[1,2])
maka kita akan mendapatkan false karena (1 != 1) and (1 != 2)
salah dan kita melihat bahwa ALL
pada dasarnya adalah AND
operator. Misalnya:
=> select id from (values (1),(2),(3)) as t(id) where id != all(array[1,2]);
id
----
3
(1 row)
Jika Anda ingin mengecualikan semua nilai dalam array, gunakan ALL
:
select "Ticket_id"
from "Tickets"
where "Status" = 1
and "Ticket_id" != all(array[1,2,3])
limit 6