如何写产品喜欢sql查询?

时间:2013-01-11 20:13:18

标签: asp.net sql sql-server

我有一个名为ProductLike的表格,其中包含字段ProductIdUserIdLike。当用户喜欢某个产品时,系统会使用UserIdProductId以及Like值(true或false)将记录添加到此表中。我想获得每个产品的列表或用户组。这是我到目前为止所尝试的,但它有错误。

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

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