mysql只对表

时间:2016-06-29 10:37:34

标签: mysql sql

有没有办法只对表的特定组求和?例如,如果我有

KEYS  /  VALS
A     /   1
A     /   2
B     /   3
B     /   3 
C     /   1
C     /   1

我想通过仅对A和C进行分组,而不是像上面的B那样对其他任何人进行分组:

KEYS  /  VALS
A     /   3
B     /   3
B     /   3 
C     /   2

使用存储过程这似乎很简单,但我不确定是否可以使用查询?

3 个答案:

答案 0 :(得分:3)

UNION ALL非B部分与B部分:

select keys, sum(vals)
from tablename
where keys <> 'B'
group by keys
union all
select keys, vals
from tablename
where keys = 'B'

答案 1 :(得分:0)

只有使用union才能实现此结果,因为任何group by都将应用于整个结果集。使用union,您可以组合2个独立查询,因此group by仅适用于其中一个查询:

select keys, sum(vals) as vals
    from yourtable
    where keys in ('A','B')
    group by keys
union
select keys, vals
    from yourtable
    where keys not in ('A','B')

答案 2 :(得分:0)

请尝试以下查询

SELECT keys, SUM(vals) as vals
FROM yourtable
WHERE keys in ('A','C')
GROUP BY keys