一尘不染

使用SUM()而不将结果分组

mysql

我已经读过(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进行此操作,但是显然表更大,并且具有更多的行和列,但这不是重点。


阅读 798

收藏
2020-05-17

共1个答案

一尘不染

SELECT a.id, b.amount
FROM table1 a
CROSS JOIN
(
    SELECT SUM(amount) amount FROM table1
) b

您需要对表中的每一行之和的值执行笛卡尔连接id。由于subselect(49)只有一个结果,因此基本上只将其附加到每个结果上id

2020-05-17