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