【发布时间】:2010-01-23 11:41:55
【问题描述】:
我不确定我是否在逻辑上犯了错误。
如果我有一个查询并且我使用空值进行内部联接,我会始终得不到任何结果,还是会忽略联接并成功?例子
user { id PK, name NVARCHAR NOT NULL, banStatus nullable reference }
如果我写了 u.banStatus 我将不会收到任何行?
select * from user as u
join banstatus as b on u.banStatus=b.id
where id=1
【问题讨论】:
-
NULL 是未定义的,所以如果我们有 NULL = NULL 那么结果将始终为假,因为我们正在比较两个未定义的值。我希望它能回答你的问题
-
您的查询也有错误。 where 子句中的
id字段不明确 - 它可能是u.id或b.id。 -
@Mark 我尝试了一个更复杂的逻辑版本,并怀疑这个问题。因此编写该虚拟查询并没有意识到歧义