【发布时间】:2017-09-07 21:06:05
【问题描述】:
我有两个类似的 SELECT 语句试图在特定用户和另一个用户的数据集相同的情况下获得重叠。我有以下但不断收到错误:
消息 8156,第 16 级,状态 1,第 30 行 为“T1”多次指定了“PermissionId”列。
消息 8156,第 16 级,状态 1,第 40 行 为“T2”多次指定了“PermissionId”列。
SELECT TOP 100 T1.Name, T1.permissionId
FROM (SELECT top 100 n.Name, rp.permissionId, rp.*
FROM dbo.[User] AS u
JOIN dbo.UserRole AS ur ON ur.UserId = u.UserId
JOIN dbo.ClientRole as cr on cr.RoleId = ur.RoleId
JOIN dbo.Name as n2 on cr.NameId = n2.NameId
JOIN dbo.RolePermissions AS rp on rp.RoleId = ur.RoleId
JOIN dbo.SystemTaxonomy AS st on st.SystemTaxonomyId = rp.PermissionId
JOIN dbo.Name AS n on st.NameId = n.NameId
WHERE u.LoginName IN ('user1')) AS T1
JOIN (SELECT top 100 n1.Name, rp1.permissionId, rp1.*
FROM dbo.[User] AS u1
JOIN dbo.UserRole AS ur1 ON ur1.UserId = u1.UserId
JOIN dbo.ClientRole as cr1 on cr1.RoleId = ur1.RoleId
JOIN dbo.Name as n2 on cr1.NameId = n2.NameId
JOIN dbo.RolePermissions AS rp1 on rp1.RoleId = ur1.RoleId
JOIN dbo.SystemTaxonomy AS st1 on st1.SystemTaxonomyId = rp1.PermissionId
JOIN dbo.Name AS n1 on st1.NameId = n1.NameId
WHERE u1.LoginName IN ('user2')) AS T2
ON T1.rp.permissionId = T2.rp1.permissionId
有人可以指导我什么是错的吗?
提前致谢
【问题讨论】:
-
查看 rp.permissionId, rp.* 并尝试 rp.permissionId AS Perm_ID, rp.* 或删除 rp.permissionId
标签: sql sql-server select join