如何从MySQL中的两个结果集中对列进行求和

时间:2009-01-28 20:12:39

标签: sql mysql database

我有下表:

评分:

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个小时了,所以我希望这可以成为我的救星。

2 个答案:

答案 0 :(得分:4)

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)而不是字符串。

答案 1 :(得分:0)

最初,为什么不直接将拇指竖起为1,拇指向下竖起? Quassnoi在案件陈述中更快......