Mysql子查询总票数
Posted
技术标签:
【中文标题】Mysql子查询总票数【英文标题】:Mysql subquery sum of votes 【发布时间】:2013-09-01 03:00:45 【问题描述】:我有一张选票表,旁边还有一张“想法”(条目)表
基本上,我想检索一个可以读取为的对象:
id,
name,
title,
votes :
up : x,
down : y
所以这很简单,直到我到达子查询并且需要对投票的正负值进行两组 SUM。
SELECT id,name,title FROM ideas
LEFT JOIN votes ON ideas.id = votes.idea_id
我的(简化的)投票表如下所示:
id
idea_id
value
其中value
可以是正数或负数int
。
如何在单个查询中获取上述对象?
加分项:我如何获得一个aggregate
字段,其中正面和负面的投票加在一起?
【问题讨论】:
见***.com/questions/3515193/…SUM(CASE WHEN ...)
【参考方案1】:
试试这个.. 未测试。
SELECT
id,
name,
title,
SUM(case when value > 0 then value end) up,
SUM(case when value < 0 then value end) down
FROM ideas
LEFT JOIN votes ON ideas.id = votes.idea_id
GROUP By id;
【讨论】:
它将按哪个id
分组? ideas.id
?
另外,这不会使它成为 votes
子节点的节点 - 有什么方法可以实现这一点,或者重构我的前端会更容易吗?如果没有 SUM,它会返回 0 吗?
等待SQL专家醒来,我确定这是可以解决的。 (我的另一个猜测是子查询,但这可能很慢..)
啊,好酷=)
- 我刚试过,如果没有投票,它会返回NULL
btw.. 你的“奖励点”应该是第三个 sum() 没有价值限制。 :D以上是关于Mysql子查询总票数的主要内容,如果未能解决你的问题,请参考以下文章