SQL JOIN未返回PR表全部记录,如何获取PR全量及EM指定字段?
如何调整SQL以获取PR表全部记录并关联EM表指定字段?
这个问题很常见——你当前用的默认JOIN本质是INNER JOIN,它只会返回两张表中匹配连接条件的交集记录。如果PR表中有记录的Principal字段在EM表的Employee字段里找不到对应匹配项,这些PR记录就会被过滤掉,自然没法返回PR表的全部内容。
要实现“获取PR表全部记录,同时关联EM表指定字段”的需求,你需要改用LEFT JOIN(左外连接):
- LEFT JOIN会优先返回左表(这里就是
PR表)的所有记录 - 对于右表(
EM表)中没有匹配连接条件的记录,对应的EM字段会显示为NULL
修改后的SQL语句如下:
SELECT [PR].[WBS1], [EM].[FirstName], [EM].[LastName], [EM].[EMail] FROM [VisionDemo].[dbo].[PR] LEFT JOIN [VisionDemo].[dbo].[EM] ON [VisionDemo].[dbo].[PR].[Principal] = [VisionDemo].[dbo].[EM].[Employee]
如果希望EM表无匹配时,用默认值(比如空字符串)替代NULL,可以用ISNULL函数优化:
SELECT [PR].[WBS1], ISNULL([EM].[FirstName], '') AS FirstName, ISNULL([EM].[LastName], '') AS LastName, ISNULL([EM].[EMail], '') AS EMail FROM [VisionDemo].[dbo].[PR] LEFT JOIN [VisionDemo].[dbo].[EM] ON [VisionDemo].[dbo].[PR].[Principal] = [VisionDemo].[dbo].[EM].[Employee]
内容的提问来源于stack exchange,提问作者Rinu
相关产品推荐
相关产品推荐

