ALL
を使用したい 、ANY
ではありません 。細かいマニュアルから:
9.21.3。 ANY / SOME(配列)
expression operator ANY (array expression)
[...]左側の式が評価され、指定された演算子を使用して配列の各要素と比較されます。 、ブール結果を生成する必要があります。
ANY
の結果 真の結果が得られた場合は「真」です。
つまり、これを言うと:
1 != any(array[1,2])
(1 != 1) or (1 != 2)
なので、trueになります。 本当です。 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。 ALL(配列)
expression operator ALL (array expression)
[...]左側の式が評価され、指定された演算子を使用して配列の各要素と比較されます。 、ブール結果を生成する必要があります。
ALL
の結果 すべての比較でtrueが得られた場合、は「true」です...
だから私たちがこれを言うなら:
1 != all(array[1,2])
(1 != 1) and (1 != 2)
なので、falseになります。 はfalseであり、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