首先我有两个表:
feeds:(id,content_id,author) 和 feeds_ratings:(id,feed_id (FK to feeds(id)),user_id,rating)
我想做的是获取特定用户对特定作者的总评分差异。
为了进一步解释,假设我们在提要表中有三行,(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 查询中实现?我尝试了搜索和我自己的一些代码,但我无法使其正常工作,因此非常感谢您的帮助!
最佳答案
像这样的东西可以使用 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 替换为适当的值——这些仅用于您的示例输入。
关于Mysql查询减法问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16776126/