我遇到左连接问题。每次我认为我理解他们时,我遇到了一个问题。在以下查询中,我只是尝试返回PracticeTypeName ='Facility'的记录。我知道在表A和表B中都存在PracticeTypeID的13328和502,因此在这个实例中不应该有任何NULL值。 PracticeTypeID = 502是PracticeTypeName ='Billing',因此不应返回。我正在使用左连接来说明ID不匹配的其他情况。
Select Memberid, locationname, practicetypeid, practicetypename
From A
Left Join B
On A.PracticeTypeId = B.PracticeTypeID
And A.PracticeTypeName = 'Facility'
此查询返回以下结果
MemberID LocationName PracticeTypeID PracticeTypeName
10 UHC 13328 Facility
10 TV 502 NULL
但是如果改为使用此查询:
Select Memberid, locationname, practicetypeid, practicetypename
From A
Left Join B
On A.PracticeTypeId = B.PracticeTypeID
Where A.PracticeTypeName = 'Facility'
我得到以下结果,这是我正在寻找的:
MemberID LocationName PracticeTypeID PracticeTypeName
10 UHC 13328 Facility
我认为使用左连接会使用以下内容,否则左连接只会成为内部连接。
On A.PracticeTypeId = B.PracticeTypeID
And A.PracticeTypeName = 'Facility'
为什么这个左连接与我认为左连接应该做的相反?
答案 0 :(得分:2)
WHERE子句将过滤整个结果集,而将条件添加到JOIN只会加入这些行。由于它是LEFT JOIN,因此将条件放在JOIN子句中仍将返回没有匹配的行,对于连接表的列,返回NULL。
WHERE查看您的结果并说“哪些行具有工具?”,并返回这些。