问题描述
我在 T-SQL 中有 2 个表,一个有 10 条记录,一个有 11 条记录.
I have 2 tables in T-SQL one with 10 records and one with 11.
当 tbl1 有 11 条记录时,这只会返回 10 条记录.我期待缺失的记录显示一个值,如果 UNIT 但 UNID 为空,但不存在.
This only returns 10 records when tbl1 has 11 records. I was expecting the missing record to show a value if UNIT but null for UNID but is just is not there.
我不明白为什么会这样
推荐答案
那么为什么 LEFT JOIN
不显示联接左侧的所有记录.
So why would a LEFT JOIN
not show all the records from a left side of the join.
是bug吗?
很可能不会.
让我们看一个简化的例子.
Lets look at a simplified example.
表A有3条记录.
TableB 有 2 条记录
TableB has 2 records
ColA 上的 INNER JOIN
ColB 将返回 2 条记录.
只有找到匹配项的那些.
An INNER JOIN
on ColA & ColB would return 2 records.
Only those where a match is found.
返回:
LEFT JOIN
将返回 3 条记录.
右侧带有 NULL
表示不匹配.
A LEFT JOIN
would return 3 records.
With a NULL
on the right side for the unmatched.
返回:
但是如果在右侧的 WHERE
子句中使用了条件会怎样?
But what happens if a criteria is used in the WHERE
clause for the right side?
返回:
什么?嗡嗡声"在哪里?
What? Where's the 'Buzz'?
你能猜到为什么 LEFT JOIN
看起来像一个 INNER JOIN
吗?
Can you guess why that LEFT JOIN
seems to behave like an INNER JOIN
?
解决方案是将此类标准放在ON
子句中.
The solution is to put such criteria in the ON
clause.
或者把条件放在WHERE
中,但也允许NULL
.
Or do put the criteria in the WHERE
, but also allow NULL
.
返回:
现在嗡嗡声又回来了.
这篇关于T-SQL 左连接不返回空列的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持跟版网!