【发布时间】:2011-05-06 19:49:08
【问题描述】:
似乎在 PostgreSQL 中,empty_field != 1(或其他值)是 FALSE。如果这是真的,有人可以告诉我如何与空字段进行比较吗?
我有以下查询,翻译为“选择用户组中尚未投票的所有帖子:
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
它什么也不输出,即使 votes 表是空的。也许我的查询有问题,而不是上面的逻辑?
编辑:似乎将v.user_id != 1 更改为v.user_id IS DISTINCT FROM 1 完成了这项工作。
来自 PostgreSQL 文档:
对于非空输入,IS DISTINCT FROM 与 运算符相同。 但是,当两个输入都为空时 将返回 false,当只有一个 输入为 null 它将返回 true。
【问题讨论】:
-
可能与其他各种问题重复,例如,stackoverflow.com/q/1833949/141081、stackoverflow.com/q/3777230/141081、...
标签: postgresql select null compare