加入不显示所有记录

时间:2017-06-29 15:40:20

标签: sql

我确信这很明显,但我完全陷入困境,因为我以前从未见过这个。

我的数据集可能会因类别列表而异(总共6个)。一些客户将拥有1或2个其他所有类别6.我试图通过的信息旨在根据客户提供相应信息的所有6个类别。

所以我设置了一个ID(1到6)和Category的简单映射表。我然后加入我的客户数据。我使用的测试数据有1,2,3,5类,虽然我得到6的NULL,但我没有得到4。我应该在类别4上看到一个Null行,因为它不存在于客户数据?

 SELECT *

FROM .dbo.Lookup_Category C

LEFT JOIN dbo.Client CL ON C.ID = CL.Category

WHERE CL.ID = 423 OR CL.Category IS NULL 

2 个答案:

答案 0 :(得分:2)

尝试使用

 SELECT *
 FROM .dbo.Lookup_Category C
 LEFT JOIN dbo.Client CL ON C.ID = CL.Category and ( CL.ID = 423 OR CL.Category IS NULL )

使用左连接中的where作为内连接

答案 1 :(得分:2)

WHERE条件移至ON条款。

WHERELEFT JOIN之后执行,并会过滤掉NULL的{​​{1}}值。

CL.ID