删除重复的左外连接
Posted
技术标签:
【中文标题】删除重复的左外连接【英文标题】:Remove duplicate left outer join 【发布时间】:2021-03-20 02:41:22 【问题描述】:我需要帮助从我的 sql 查询的以下结果中合并 2 个重复的行。
结果
查询
SELECT DISTINCT
a.[LocationID],
a.[BuildingCode],
a.[LocationCode],
a.[LocationName],
c.UserName,
d.RoleName
FROM
[dbo].[Location] a
LEFT OUTER JOIN
[dbo].[UserLocation] b ON a.LocationID = b.LocationID
LEFT OUTER JOIN
[dbo].[User] c ON b.UserID = c.UserID AND c.RoleID = 2
LEFT OUTER JOIN
[dbo].[Role] d ON c.RoleID = d.RoleID
如果您可以看到有 2 行 LocationId 为 3057,其中一行为 Role Admin,另一行为 NULL。我想合并它们,并希望只显示一行与 Role Admin。
感谢您对此的关注。
【问题讨论】:
Bad habits to kick : using table aliases like (a, b, c) or (t1, t2, t3) 可能重复的问题? - ***.com/questions/30410622/… 【参考方案1】:试试这个:
SELECT
a.[LocationID],
a.[BuildingCode],
a.[LocationCode],
a.[LocationName],
MAX(c.UserName) UserName,
MAX(d.RoleName ) RoleName
FROM
[dbo].[Location] a
LEFT OUTER JOIN
[dbo].[UserLocation] b ON a.LocationID = b.LocationID
LEFT OUTER JOIN
[dbo].[User] c ON b.UserID = c.UserID AND c.RoleID = 2
LEFT OUTER JOIN
[dbo].[Role] d ON c.RoleID = d.RoleID
GROUP BY
a.[LocationID],
a.[BuildingCode],
a.[LocationCode],
a.[LocationName]
【讨论】:
以上是关于删除重复的左外连接的主要内容,如果未能解决你的问题,请参考以下文章