1

UserId、ItemId、ItemNameの各列を含むテーブルがあります。そのユーザーが特定のユーザーのアイテムであるすべてのアイテムを持っている場合、いくつかのユーザーの異なるアイテムを取得したいと思います。SQLServerでそれを行うにはどうすればよいですか

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 に答える