我有一个连接三个表的查询,并返回一个别名计算作为最终字段。当连接的字段中存在null时,该值通常为null。联接运作良好。
我想返回记录,其中我在计算字段中获得Null。
但是如果我添加
WHERE field_name IS NOT NULL
到最后我没有记录
如果我添加
{{1}}
我得到了整套,我可以看到几条记录,实际上是空的
有关为何或如何解决此问题的任何解释?
编辑:我为我的案子找到了一个解决方案。字段名称是上面计算的别名。当我在where子句中复制计算时,它没有放置别名,而是正确运行。
答案 0 :(得分:0)
给定外连接:
select *
from table1
left join table2 on table2.table1_id = table1.id
将is null
过滤器应用于连接表的方法是将其置于连接条件中:
select *
from table1
left join table2 on table2.table1_id = table1.id
and table2.col1 is null
和不:
select *
from table1
left join table2 on table2.table1_id = table1.id
where table2.col1 is null
因为如果连接未命中,则连接表中的所有列都为空,因此在is null
中使用where
将返回连接到具有空和的行的所有行em>所有未加入的行。\
答案 1 :(得分:0)
我为我的案子找到了一个解决方案。字段名称是上面计算的别名。当我在where子句中复制计算时,它没有放置别名,而是正确运行。