行总和
Summation of rows
我正在尝试维护一个项目集合的数据库。从文件集合中读取项目和值。我想要 table 中重复项的频率总和。
如果我有一个table喜欢
type frequency
---------------
bar 10
soap 25
bar 13
那么我需要 table 成为
type frequency
---------------
bar 23
soap 25
如何更新这样的 table?
我试过了
SELECT
type,
SUM(frequency)
FROM
MyTable
但输出就像
type frequency
-----------------
bar 48
聚合函数需要 GROUP BY
。
试试这个:
SELECT
type,
SUM(frequency)
FROM
MyTable
GROUP BY
type
您在查询中缺少一个简单的 GROUP BY
来告诉聚合函数 SUM()
如何对数据进行分组。如果没有 GROUP BY
,您的聚合函数只会将所有行加在一起。
UPDATE table t,
(
SELECT type, SUM(frequency) as frequency
FROM table
GROUP BY type
) t1
SET t.frequency = t1.frequency WHERE t.type = t1.type
这是一种用每种类型的总和更新 table 的方法。
您的更新将导致数据库中每种类型的条目重复。对此的一个简单解决方法是对 table 进行更改以添加一个唯一索引,该索引不允许超过一个。你必须使用 IGNORE
否则它会说你有一个重复的条目
ALTER IGNORE TABLE table ADD UNIQUE INDEX `my_special_idx` (type, frequency);
我正在尝试维护一个项目集合的数据库。从文件集合中读取项目和值。我想要 table 中重复项的频率总和。
如果我有一个table喜欢
type frequency
---------------
bar 10
soap 25
bar 13
那么我需要 table 成为
type frequency
---------------
bar 23
soap 25
如何更新这样的 table?
我试过了
SELECT
type,
SUM(frequency)
FROM
MyTable
但输出就像
type frequency
-----------------
bar 48
聚合函数需要 GROUP BY
。
试试这个:
SELECT
type,
SUM(frequency)
FROM
MyTable
GROUP BY
type
您在查询中缺少一个简单的 GROUP BY
来告诉聚合函数 SUM()
如何对数据进行分组。如果没有 GROUP BY
,您的聚合函数只会将所有行加在一起。
UPDATE table t,
(
SELECT type, SUM(frequency) as frequency
FROM table
GROUP BY type
) t1
SET t.frequency = t1.frequency WHERE t.type = t1.type
这是一种用每种类型的总和更新 table 的方法。
您的更新将导致数据库中每种类型的条目重复。对此的一个简单解决方法是对 table 进行更改以添加一个唯一索引,该索引不允许超过一个。你必须使用 IGNORE
否则它会说你有一个重复的条目
ALTER IGNORE TABLE table ADD UNIQUE INDEX `my_special_idx` (type, frequency);