使用SUM()而不将结果分组
我已经读过(this),但无法找到一种方法来解决我的特定问题。我知道这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.amountFROM table1 a
CROSS JOIN
(
SELECT SUM(amount) amount FROM table1
) b
您需要对表中的每一行之和的值执行笛卡尔连接id
。由于subselect(49
)只有一个结果,因此基本上只将其附加到每个结果上id
。
以上是 使用SUM()而不将结果分组 的全部内容, 来源链接: utcz.com/qa/428182.html