我有两个表,我正在进行LEFT JOIN
以获取第一个表中的所有记录,无论第二个表是否匹配。
我发现有时NULL
会回到连接列。我输入了一个where子句来过滤掉连接列中NULL
的记录,但我仍然看到这些记录。
我需要在下面的SQL
中更改哪些内容才能过滤掉加入列中NULL
的记录?
select
folders.FolderId,
folders.lastUpdated,
folder.FolderName,
folder.FolderParentID
from dbo.xsdl_Folder folder
left join dbo.Folders folders
on folder.FolderID = folders.FolderID
where folder.FolderID is not null;
答案 0 :(得分:5)
如果您的FolderId返回NULL并且您打算从Folder表中检索所有数据并且只检索来自Folders表的那些匹配记录,那么您似乎需要更改查询以使用folder.FolderId您的SELECT语句中的folders.FolderId:
select
folder.FolderId,
folders.lastUpdated,
folder.FolderName,
folder.FolderParentID
from dbo.xsdl_Folder folder
left join dbo.Folders folders
on folder.FolderID = folders.FolderID
或者,如果您要从结果中删除所有NULL值,请不要使用LEFT JOIN
,而是使用INNER JOIN
:
select
folders.FolderId,
folders.lastUpdated,
folder.FolderName,
folder.FolderParentID
from dbo.xsdl_Folder folder
inner join dbo.Folders folders
on folder.FolderID = folders.FolderID
LEFT JOIN
的目的是从第二个表返回NULL值,在本例中为dbo.Folders。