如何在不丢失所有行的情况下获取某些列的SUM?

时间:2014-12-08 21:05:12

标签: mysql select sum

CREATE TABLE tmp ( col1 int, col2 int );
INSERT INTO tmp VALUES (1,3), (2,5), (3,7);

SELECT col1, col2, SUM(col2) AS Total FROM tmp; -- ???

SELECT语句给我留下了这个数据集:

COL1 COL2总
1 3 15

有没有办法允许所有行显示而不引入子查询,因此结果如下:

COL1 COL2总
1个3 15
2个5 15
3 7 15

1 个答案:

答案 0 :(得分:0)

您可以使用交叉联接来避免子查询:

SELECT t1.col1, t1.col2, sum(t2.col2) sum_col2
from tmp t1
cross join tmp t2 
group by 1, 2

请参阅SQL fiddle

请注意,这仅适用于col1和col2的组合是唯一的。