我有下表:
评分:
ID | post_id | rating_type
rating_type 字段是“赞成”或“反对”。我想得到一个结果集,告诉我评分最高的帖子是什么。以下查询为我提供了一个结果集,其中包含每个唯一 post_id 的赞成票数。
SELECT COUNT(post_id) as number_up, post_id FROM wp_sp_post_ratings WHERE rating_type = 'thumb-up' GROUP BY post_id
太好了!我可以为大拇指向下评级类型做类似的事情。但是,我需要的是获得总评分,其中每个大拇指向上给一个帖子一分,每个大拇指向下给一个帖子负分。然后,我需要按总评级来排序。所以,假设我们有以下内容:
帖子 1 有 3 个赞成票和 2 个反对票 帖子 2 有 14 票赞成票和 33 票反对票 帖子 3 有 4 票赞成票和 0 票反对票
我希望看到如下结果集:
post_id | total_rating
3 | 4
1 | 1
2 | -19
我不知道该怎么做。我已经将我的头撞到文档和谷歌上大约 2 个小时了,所以我希望 SO 可以成为我的救世主。
最佳答案
SELECT SUM(CASE WHEN rating_type = 'up' THEN 1 WHEN rating_type = 'down' THEN -1 END CASE)
FROM posts
GROUP BY post_id
P. S. 最好将赞成票和反对票保留为数字(+1 和 -1)而不是字符串。
关于sql - 如何在 MySQL 中对两个结果集中的列求和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/489116/