在连接表上过滤NULL

时间:2016-02-16 13:55:54

标签: postgresql

我有这个问题:

select t1.l_id, coalesce(t2.o_id,0) from t1 left join t2  using(l_id);

给了我一个结果,第二列中有0。但是,当我在列上放置where时,它没有给我任何结果:

select t1.l_id, coalesce(t2.o_id,0) from t1 left join t2  using(l_id) 
    where t2.o_id = null;

如何选择没有连接记录的记录?

1 个答案:

答案 0 :(得分:3)

使用:

WHERE t2.o_id IS NULL;

而不是:

WHERE t2.o_id = NULL;

如果t2.o_idNULL,那么第二个谓词的评估结果为NULL,并不像人们预期的那样真实。这就是所谓的three-valued logic SQL。