使用WHERE IS NULL返回所有值

时间:2015-05-01 14:02:56

标签: sql sql-server tsql null

我有一个连接三个表的查询,并返回一个别名计算作为最终字段。当连接的字段中存在null时,该值通常为null。联接运作良好。

我想返回记录,其中我在计算字段中获得Null。

但是如果我添加

WHERE field_name IS NOT NULL

到最后我没有记录

如果我添加

{{1}}

我得到了整套,​​我可以看到几条记录,实际上是空的

有关为何或如何解决此问题的任何解释?

编辑:我为我的案子找到了一个解决方案。字段名称是上面计算的别名。当我在where子句中复制计算时,它没有放置别名,而是正确运行。

2 个答案:

答案 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将返回连接到具有空所有未加入的行。\

答案 1 :(得分:0)

我为我的案子找到了一个解决方案。字段名称是上面计算的别名。当我在where子句中复制计算时,它没有放置别名,而是正确运行。