需要查询以下输出。
{{1}}
我需要一个SELECT查询来求和(column1)并在column2中显示结果
答案 0 :(得分:2)
您可以使用窗口功能:
select t.*, sum(col1) over () as col2
from table t;
但是,如果您使用的是旧版本,则MySQL不具有窗口功能,因此可以使用subquery
来代替:
select t.*, (select sum(t1.col1) from table t1) as col2
from table t;
答案 1 :(得分:0)
可以使用Window Functions在MySQL版本> = 8.0中轻松解决。
在较旧的MySQL版本中,您可以在Sum
中单独获得整体Derived Table。然后,对主表执行Cross Join
,并相应地对Select
字段进行操作:
SELECT t1.ID,
t1.Column1,
t2.sum_total AS Column2
FROM your_table AS t1
CROSS JOIN (SELECT SUM(Column1) AS sum_total
FROM your_table) AS t2
ORDER BY t1.ID ASC
注意,基于派生表的方法比在Select
中使用子查询更有效。在这种方法中,Sum
的计算将只发生一次;而另一种方法将针对每一行进行计算。
演示输出: