我有一个包含 UserId、ItemId 和 ItemName 列的表。如果用户拥有特定用户项目的所有项目,我想获得一些用户的不同项目。我怎样才能用 sql server 做到这一点
问问题
96 次
1 回答
4
您可以使用关系划分来查找拥有与 UserId =1 相同的所有项目的所有用户。这里讨论了一些替代方法。然后您可以使用EXCEPT
减去用户 1 的项目。
SELECT ItemId
FROM UserItems U1
WHERE NOT EXISTS ( SELECT *
FROM UserItems U2
WHERE UserId = 1
AND NOT EXISTS ( SELECT *
FROM UserItems U3
WHERE U1.UserId = U3.UserId
AND U2.ItemId = U3.ItemId ) )
EXCEPT
SELECT ItemId
FROM UserItems
WHERE UserId = 1
于 2011-08-30T12:45:21.233 回答