所以我有一张桌子,有一个FK
to aUserId
和一个FK
to a ProductId
。
如果它们有多个产品,则每个UserId
都可以列出多次。
我需要查询以获取每个UserId
具有,例如ProductId 1
,但不是ProductId 2
。
我怎样才能开始编写这样的查询?
编辑:
但这是我遇到问题的部分;所有拥有产品 1 的用户都应该拥有产品 2,但有些没有,所以我需要获得拥有产品 1 而不是产品 2 的用户
所以我有一张桌子,有一个FK
to aUserId
和一个FK
to a ProductId
。
如果它们有多个产品,则每个UserId
都可以列出多次。
我需要查询以获取每个UserId
具有,例如ProductId 1
,但不是ProductId 2
。
我怎样才能开始编写这样的查询?
编辑:
但这是我遇到问题的部分;所有拥有产品 1 的用户都应该拥有产品 2,但有些没有,所以我需要获得拥有产品 1 而不是产品 2 的用户
select distinct userID from yourtable t
where t.ProductId=@ProductID1
and not exists(select UserID from yourtable
where Userid=t.userID and ProductID=@ProductID2)
- 这是你想要的吗?
SELECT
u.[UserID]
, p.[ProductID]
FROM TableA a
LEFT JOIN Users u ON
u.[UserID] = a.[UserID]
LEFT JOIN Products p ON
p.[ProductID] = a.[ProductID]
WHERE a.ProductID = 1
假设您在user
和之间有一个桥接表product
如果你想要更多然后 id
SELECT u.user_id, u.name
FROM [user] AS u
INNER JOIN user_product AS up
ON u.user_id = up.user_id
INNER JOIN product as p
ON p.product_id = up.product_id
WHERE p.id = 1
或者您可以只查询您的网桥表
SELECT up.user_id
FROM user_product AS up
WHERE up.product_id = 1