gpt4 book ai didi

mysql使用返回x行数的子查询更新或插入到另一个表

转载 作者:行者123 更新时间:2023-11-29 02:39:03 24 4
gpt4 key购买 nike

我已经尝试了大约 8 个小时,但无济于事。我正在尝试将 2 到 10 行的 AVG 从单个列更新或插入到另一个表中。

我现在用来计算平均值的代码。

SELECT COUNT(*), NAME, AVG(AVERAGE) FROM table1 GROUP BY NAME ORDER BY NAME;

这会返回正确的结果,因为我使用 group by 作为解决方法,但现在我需要将该数据放入另一个表中。

然而,当我尝试运行更新或插入 mysql 时,总是提示多行子查询返回。

如何将其放入名称匹配的表 2 和表 2 的列平均值?该名称是 100% 唯一的。我也希望名称匹配。这可能会每天更新一次。

编辑:第一个表 ENTRY_ID,NAME(对于多个条目不是唯一的),AVERAGE第二张表有 ID(unique), NAME(unique), AVERAGE

我已经尝试了很多查询,这并不好笑我已经搜索了所有文档我只是没有把一些东西放在一起。

当您运行上面的代码时,它可能有 8 行,它运行 AVG(AVERAGE) 可能有 6 行是按名称匹配的。

我想将它们存储在 table2 中,其中 table1 中的名称与 table2 中的名称匹配,但只给出上述查询的单个平均值。

谢谢

EDIT2:这是有效的代码

INSERT INTO table2 (NAME, AVERAGE)
(选择 * 来自
(SELECT NAME, AVG(AVERAGE) as AVERAGE
从表 1
按名称分组)main_query)
在重复键上
UPDATE table2.AVERAGE = main_query.AVERAGE;

感谢@ARubiksCube

最佳答案

我不确定您的实际错误消息是什么。我的猜测是您使用的是较新版本的 MYSQL,所以您会收到此错误。

此查询将使用表 1 中的值更新表 2 中的所有记录。如果该记录不存在,则将其插入。如果记录存在,它将被更新。

INSERT INTO table2 (NAME, AVERAGE)
SELECT *
FROM
(SELECT NAME, AVG(AVERAGE) as AVERAGE
FROM table1
GROUP BY NAME) main_query
ON DUPLICATE KEY
UPDATE table2.AVERAGE = main_query.AVERAGE;

关于mysql使用返回x行数的子查询更新或插入到另一个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56766964/

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