1

我有一个包含 UserId、ItemId 和 ItemName 列的表。如果用户拥有特定用户项目的所有项目,我想获得一些用户的不同项目。我怎样才能用 sql server 做到这一点

4

1 回答 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 回答