我正在尝试维护一个项目集合的数据库。从文件集中读取项目和值。我想要在表格中重复项目的频率的总和。
如果我有一张像
这样的表格type frequency
---------------
bar 10
soap 25
bar 13
然后我需要表格
type frequency
---------------
bar 23
soap 25
如何更新此类表格?
我试过
SELECT
type,
SUM(frequency)
FROM
MyTable
但输出就像
type frequency
-----------------
bar 48
答案 0 :(得分:2)
汇总功能需要GROUP BY
。
试试这个:
SELECT
type,
SUM(frequency)
FROM
MyTable
GROUP BY
type
答案 1 :(得分:2)
您在查询中缺少一个简单的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
这是一种可以使用每种类型的总和更新表的方法。
您的更新将在数据库中为每种类型导致重复条目。对此的一个简单修复是对表进行更改以添加不允许存在多个索引的唯一索引。您必须使用IGNORE
,否则它会说您有重复的条目
ALTER IGNORE TABLE table ADD UNIQUE INDEX `my_special_idx` (type, frequency);