在PostgreSQL中,似乎
我有以下查询,它的意思是“选择用户组中所有尚未投票的帖子:
并且它没有输出任何内容,即使投票表是空的。也许我的查询有问题,而不是上面的逻辑有问题?
编辑:看起来将
对于非空输入,IS DISTINCT FROM与<>运算符相同。但是,当两个输入都为空时,它将返回false,并且当只有一个输入为空时,它将返回true。
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
并且它没有输出任何内容,即使投票表是空的。也许我的查询有问题,而不是上面的逻辑有问题?
编辑:看起来将
v.user_id != 1
更改为v.user_id IS DISTINCT FROM 1
就可以了。
来自PostgreSQL文档:对于非空输入,IS DISTINCT FROM与<>运算符相同。但是,当两个输入都为空时,它将返回false,并且当只有一个输入为空时,它将返回true。