Asp.net 如何编写sql查询之类的产品?

Asp.net 如何编写sql查询之类的产品?,asp.net,sql,sql-server,Asp.net,Sql,Sql Server,我有一个名为ProductLike的表,其中包含ProductId、UserId和Like字段。当用户喜欢某个产品时,会向该表添加一条记录,其中包含UserId和ProductId,以及Like值(true或false)。我想获得拥有每种产品的用户列表或用户组。这是我迄今为止尝试过的,但它有错误 SELECT p.UserId,* FROM ProductLike p WHERE p.ProductId = (SELECT pk.ProductId FROM Produ

我有一个名为
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);

您可以为该表添加别名并进行如下连接:

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

非主题提示:如果您已经有一个实体“喜欢”,您可能不需要添加一个字段“喜欢”,因为如果项目是喜欢的,它就包含在该表中,如果不是,它就不包含。设置此标志的唯一原因可能是需要跟踪用户是否撤销了其like(未链接)。提示:您可以查看。如果您提供了输入和所需输出的示例,则会有所帮助。
SELECT p.ProductId, COUNT(p.ProductId) 'Likes'
FROM ProductLike p 
WHERE p.[Like]=1 
GROUP BY p.ProductId
HAVING COUNT(p.ProductId) > 1