Parece que en PostgreSQL, empty_field != 1
(o algún otro valor) es FALSE. Si esto es cierto, ¿alguien me puede decir cómo comparar con campos vacíos?Postgresql y comparando con un campo vacío
He siguiente consulta, que se traduce en "seleccionar todos los mensajes de grupo de usuarios para los que no ha votado todavía:.
SELECT p.id, p.body, p.author_id, p.created_at
FROM posts p
LEFT OUTER JOIN votes v ON v.post_id = p.id
WHERE p.group_id = 1
AND v.user_id != 1
y se da salida a la nada, a pesar de que califican tabla está vacía Tal vez hay algo malo en mi consulta y no con la lógica anterior
Editar:? parece que el cambio de v.user_id != 1
, a v.user_id IS DISTINCT FROM 1
, hizo el trabajo a partir de documentos de PostgreSQL:.
Para entradas no nulas, IS DISTINCT FROM es lo mismo que el operador <>. Sin embargo, cuando ambas entradas son nulas, devolverá falso, y cuando solo una entrada es nula, devolverá verdadero.
Posible duplicar con varias otras preguntas, por ejemplo, http://stackoverflow.com/q/1833949/141081, http://stackoverflow.com/q/3777230/141081, ... – Dirk