这是我的Table1
personid
1
?
2
3
4
?
6
Run Code Online (Sandbox Code Playgroud)
这是我的查询
select *
from table2
where personid not in
(
select personid
from table1
)
Run Code Online (Sandbox Code Playgroud)
结果是 nothing
这是我的第二个查询
select *
from table2
where personid not in
(
select personid
from table1
where personid is not null
)
Run Code Online (Sandbox Code Playgroud)
结果是 ok
问题:为什么第一个查询不起作用?我看不出任何逻辑问题.是的,是否可以null
提升teradata?
它并不特定于Teradata,它在所有RDBMS中都是相同的(或者至少应该是相同的).与NULL的任何比较导致UNKNOWN和NOT IN是一个ANDed条件:
personid <> 1st_value_in_list AND personid <> 2nd_value_in_list AND ... AND personid <> NULL
这已经多次讨论过,例如 NOT IN子句和NULL值