gpt4 book ai didi

mysql - 插入不在查询中与更新的区别

转载 作者:行者123 更新时间:2023-11-29 15:07:07 25 4
gpt4 key购买 nike

如果我有如下所示的两个表,第一个表显示原始数据,第二个表保存原始数据的压缩版本:

raw_table:

val
1
1
2
2
2
3
3
4

comp_table:

val       count
1 2
2 3
3 2
4 1

我想将raw_data压缩到另一个表中

INSERT INTO comp_table VALUES (
SELECT val, COUNT(val) FROM raw_table
WHERE val NOT IN(
SELECT val FROM comp_data
) GROUP BY val
)

第一个问题:上面的语法正确吗?

第二个问题:计数已更新,执行更新的最有效查询是什么?

注意:raw_table中的数据大小超过一百万条记录

提前致谢:D

最佳答案

该查询可能会起作用,但这是 ON DUPLICATE KEY UPDATE 的一个很好的用例:

INSERT INTO comp_table (val, val_count)
SELECT
val, 1
FROM comp_data
ON DUPLICATE KEY UPDATE val_count = val_count + 1;

第一次运行插入查询时,它将插入值并将计数设置为 1。此后每当插入相同的值时,计数都会递增。

注意:为此,您必须在 comp_table 的 val 列上拥有唯一的键。

http://dev.mysql.com/doc/refman/5.0/en/insert-on-duplicate.html

关于mysql - 插入不在查询中与更新的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1760047/

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