1

首先,我有两张桌子:

feeds:(id,content_id,author)feeds_ratings:(id,feed_id (FK to feeds(id)),user_id,rating)

我想要做的是获得某个用户对特定作者的总评分差异。

为了解释更多,假设我们在 feeds 表中有三行,(1,3245,test),(2,3215,test),(3,3122,test)和 feeds_ratings 表上的树行,(1 ,1,12,like), (1,2,12,like),(1,3,12,dislike)

输入将是 user_id 和作者,我希望输出是输入用户对特定输入作者的总不喜欢和喜欢之间的差异。(在此示例中,它将为 1,因为有两个喜欢和一个不喜欢。

如何在 mysql 查询中实现?我尝试搜索和一些我自己的代码,但我无法让它工作,所以任何帮助表示赞赏!

4

1 回答 1

2

像这样的东西可以使用SUM--CASE加 1 表示喜欢,加 -1 表示不喜欢:

SELECT SUM(CASE WHEN fr.rating = 'like' THEN 1 ELSE -1 END) TotalLikes
FROM Feeds F
  INNER JOIN Feeds_Ratings FR ON F.id = FR.feed_id
WHERE F.author = 'test' 
  AND FR.user_id = 12

显然,将 author 和 user_id 替换为适当的值——这些仅用于您的示例输入。

于 2013-05-27T15:25:12.213 回答