【问题标题】:Mysql query substract issueMysql查询减法问题
【发布时间】:2013-05-27 15:18:48
【问题描述】:

首先我有两张桌子:

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

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

为了解释更多,假设我们在 feed 表中有三行,(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 查询中实现?我尝试搜索和一些我自己的代码,但我无法让它工作,所以任何帮助都非常感谢!

【问题讨论】:

  • 为什么不提供一个sqlfiddle? (这应该是标准要求。)

标签: mysql subtraction


【解决方案1】:

使用SUMCASE 可以实现类似的效果——喜欢加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 替换为适当的值 - 这些仅用于您的示例输入。

【讨论】:

  • 亲爱的主人,速度很快!我无法弄清楚如何做总和部分,非常感谢。我会立即将其标记为已接受。
  • @Systemfreak -- np,很高兴我能帮上忙!
猜你喜欢
  • 1970-01-01
  • 2017-02-02
  • 1970-01-01
  • 2011-11-14
  • 1970-01-01
  • 1970-01-01
  • 2023-03-25
相关资源
最近更新 更多