0

我有一个以ProductLike字段ProductIdUserId和命名的表Like。当用户喜欢产品时,会在此表中添加一条记录,其中包含UserIdProductId以及Like值(真或假)。我想获得拥有每种产品的用户列表或用户组。这是我迄今为止尝试过的,但它有错误。

SELECT  p.UserId,* 
FROM    ProductLike p WHERE p.ProductId =
        (SELECT pk.ProductId FROM ProductLike pk WHERE pk.ProductLike = 1);
4

1 回答 1

2

您可以给表起别名并像这样加入:

SELECT p.ProductId,p.UserId,p2.UserId 
FROM ProductLike p 
JOIN ProductLike p2 ON p.ProductId = p2.ProductId
WHERE p.[Like]=1 AND p2.[Like]=1 
  AND p.UserId <> p2.UserId

这将为您提供“喜欢”同一产品的所有用户的结果集。

编辑:如果您想获得多次被喜欢的所有产品的结果集,您可以这样做:

SELECT p.ProductId, COUNT(p.ProductId) 'Likes'
FROM ProductLike p 
WHERE p.[Like]=1 
GROUP BY p.ProductId
HAVING COUNT(p.ProductId) > 1
于 2013-01-11T20:20:10.933 回答