首先,我有两张桌子:
供稿:(id,content_id,作者)和 feeds_ratings:(id,feed_id(FK to feeds(id)),user_id,rating)
我想要做的是获得特定用户对特定作者的总评分差异。
为了解释一下,假设我们在feed表中有三行,(1,3245,test),(2,3215,test),(3,3122,test)和feed_ratings表上的树行,(1,1,12,like),(1,2,12,like),(1,3,12,dislike)
输入将是user_id和作者,我希望输出是输入用户对特定输入作者的总不喜欢和喜欢之间的差异。 (在这个例子中它将是1,因为两个喜欢和一个不喜欢。
如何在mysql查询中实现?我尝试了搜索和我自己的一些代码,但我不能使它工作,所以任何帮助都表示赞赏!
答案 0 :(得分:2)
使用SUM
CASE
时可以使用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
- 喜欢为1添加1,为不喜欢添加-1:
{{1}}
显然用适当的值替换author和user_id - 这些仅用于您的示例输入。