Você deseja usar
ALL , não ANY . Do manual fino:
9.21.3. ANY/SOME (matriz)
expression operator ANY (array expression)
[...] A expressão da esquerda é avaliada e comparada com cada elemento do array usando o operador fornecido , que deve gerar um resultado booleano. O resultado deANYé "verdadeiro" se algum resultado verdadeiro for obtido.
Então, se dissermos isso:
1 != any(array[1,2])
então seremos verdadeiros desde
(1 != 1) or (1 != 2) é verdade. ANY é essencialmente um OR operador. Por exemplo:=> select id from (values (1),(2),(3)) as t(id) where id != any(array[1,2]);
id
----
1
2
3
(3 rows)
Se olharmos para
ALL , Nós vemos:
9.21.4. TODOS (matriz)
expression operator ALL (array expression)
[...] A expressão da esquerda é avaliada e comparada com cada elemento do array usando o operador fornecido , que deve gerar um resultado booleano. O resultado deALLé "verdadeiro" se todas as comparações forem verdadeiras...
então se dissermos assim:
1 != all(array[1,2])
então teremos false já que
(1 != 1) and (1 != 2) é false e vemos que ALL é essencialmente um AND operador. Por exemplo:=> select id from (values (1),(2),(3)) as t(id) where id != all(array[1,2]);
id
----
3
(1 row)
Se você deseja excluir todos os valores em uma matriz, use
ALL :select "Ticket_id"
from "Tickets"
where "Status" = 1
and "Ticket_id" != all(array[1,2,3])
limit 6