我已经读过(this) https://stackoverflow.com/questions/2381053/how-to-apply-a-sum-operation-without-grouping-the-results-in-sql,但无法找到一种方法来实现它来解决我的具体问题。我知道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
您需要执行笛卡尔连接 http://en.wikipedia.org/wiki/Join_%28SQL%29#Cross_join表中每一行的总和值与每行的值之和id
。由于子选择只有一个结果 (49
),它基本上只是被附加到每个id
.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)