Quiere usar ALL
, no ANY
. Del buen manual:
expression operator ANY (array expression)
[...] La expresión de la izquierda se evalúa y compara con cada elemento de la matriz utilizando el operador dado. , que debe producir un resultado booleano. El resultado de ANY
es "verdadero" si se obtiene algún resultado verdadero.
Así que si decimos esto:
1 != any(array[1,2])
entonces seremos verdaderos desde (1 != 1) or (1 != 2)
es verdad. ANY
es esencialmente un OR
operador. Por ejemplo:
=> select id from (values (1),(2),(3)) as t(id) where id != any(array[1,2]);
id
----
1
2
3
(3 rows)
Si miramos ALL
, vemos:
expression operator ALL (array expression)
[...] La expresión de la izquierda se evalúa y compara con cada elemento de la matriz utilizando el operador dado. , que debe producir un resultado booleano. El resultado de ALL
es "verdadero" si todas las comparaciones arrojan verdadero...
entonces si decimos esto:
1 != all(array[1,2])
entonces obtendremos falso ya que (1 != 1) and (1 != 2)
es falso y vemos que ALL
es esencialmente un AND
operador. Por ejemplo:
=> select id from (values (1),(2),(3)) as t(id) where id != all(array[1,2]);
id
----
3
(1 row)
Si desea excluir todos los valores en una matriz, use ALL
:
select "Ticket_id"
from "Tickets"
where "Status" = 1
and "Ticket_id" != all(array[1,2,3])
limit 6