SELECT "Ticket_id" FROM "Tickets"
WHERE "Status" = 1 AND ("Ticket_id" != ANY(array[1,2,3])) Limit 6
y el resultado es 1,2,3,4,5,6consulta Un PostgreSQL con 'ANY' no está funcionando
SELECT "Ticket_id" FROM "Tickets"
WHERE "Status" = 1 AND ("Ticket_id" != ANY(array[1,2,3])) Limit 6
y el resultado es 1,2,3,4,5,6consulta Un PostgreSQL con 'ANY' no está funcionando
que desea utilizar ALL
, no ANY
. Del fine manual:
9.21.3. CUALQUIER/some (array)
expression operator ANY (array expression)
[...] La expresión de la izquierda se evalúa y se compara con cada elemento de la matriz usando el dado operador, que debe producir un resultado booleano. El resultado de
ANY
es "verdadero" si se obtiene un resultado verdadero.
lo tanto, si decimos esto:
1 != any(array[1,2])
manera se consigue cierto ya (1 != 1) or (1 != 2)
es cierto. ANY
es esencialmente un operador OR
. 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 nos fijamos en ALL
, we see:
9.21.4. ALL (array)
expression operator ALL (array expression)
[...] La expresión de la izquierda se evalúa y se compara con cada elemento de la matriz usando el dado operador, que debe producir un resultado booleano. El resultado de
ALL
es "true" si todas las comparaciones dan cierto ...
por lo que si decimos esto:
1 != all(array[1,2])
manera se consigue falsa desde (1 != 1) and (1 != 2)
es falso y vemos que ALL
es esencialmente un operador AND
. 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, utilice ALL
:
select "Ticket_id"
from "Tickets"
where "Status" = 1
and "Ticket_id" != all(array[1,2,3])
limit 6
Qué quiere decir:
"Ticked_id" NOT IN (1,2,3)
que no conocen el valor de la matriz. Tengo que usar CUALQUIER – Bogo
Oh mi mal, eso cambia todo - http://stackoverflow.com/a/10675636/1406230 arriba es bueno :) –