我已经读过(this),但无法找到一种方法来解决我的特定问题。我知道这SUM()是一个聚合函数,不按原样使用它是没有意义的,但是在这种特定情况下,我必须SUM()在保持每一行的同时获取所有结果。
SUM()
这是桌子:
--ID-- --amount-- 1 23 2 11 3 8 4 7
我需要SUM()数量,但要保留每条记录,因此输出应为:
--ID-- --amount-- 1 49 2 49 3 49 4 49
我有此查询,但它只对每一行求和,而不是对所有结果求和:
SELECT a.id, SUM(b.amount) FROM table1 as a JOIN table1 as b ON a.id = b.id GROUP BY id
没有,SUM()它只会返回一行,但是我需要维护所有ID。
注意:是的,这是一个非常基本的示例,我可以在此处使用php进行此操作,但是显然表更大,并且具有更多的行和列,但这不是重点。
SELECT a.id, b.amount FROM table1 a CROSS JOIN ( SELECT SUM(amount) amount FROM table1 ) b
您需要对表中的每一行之和的值执行笛卡尔连接id。由于subselect(49)只有一个结果,因此基本上只将其附加到每个结果上id。
id
49