gpt4 book ai didi

mysql - 行总和

转载 作者:行者123 更新时间:2023-11-29 04:40:08 24 4
gpt4 key购买 nike

我正在尝试维护一个项目集合的数据库。从文件集合中读取项目和值。我想要表中重复项的频率总和。

如果我有一张像这样的 table

type   frequency
---------------
bar 10
soap 25
bar 13

那么我需要的表是

type   frequency
---------------
bar 23
soap 25

如何更新这样的表格?

我试过了

SELECT
type,
SUM(frequency)
FROM
MyTable

但输出就像

type    frequency
-----------------
bar 48

最佳答案

您在查询中缺少一个简单的 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);

SQL Fiddle Example

关于mysql - 行总和,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31144762/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com