我有一个名为ProductLike
的表格,其中包含字段ProductId
,UserId
和Like
。当用户喜欢某个产品时,系统会使用UserId
和ProductId
以及Like
值(true或false)将记录添加到此表中。我想获得每个产品的列表或用户组。这是我到目前为止所尝试的,但它有错误。
SELECT p.UserId,*
FROM ProductLike p WHERE p.ProductId =
(SELECT pk.ProductId FROM ProductLike pk WHERE pk.ProductLike = 1);
答案 0 :(得分: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