gpt4 book ai didi

mysql - 使用 ON DUPLICATE KEY UPDATE 排序的表上的子 SELECT 执行 INSERT INTO 表

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

我有一个表 tableA,我想使用它,然后将每个结果行插入/更新到 tableB 中。目前我有这样的东西:

delete from tableB;
set @place = 0;
INSERT INTO tableB (id, place, name, colD, colF) SELECT (id, greatest(@place := @place + 1, 0) from tableA order by colD desc;

这可行,但我不想每次都从 tableB 中删除,因为该表可能包含数十万行。因此,我想使用 ON DUPLICATE KEY UPDATE,因为每个 id 列都设置为主键。我尝试过以下各种版本(移动 ON DUPLICATE KEY UPDATE 子句)

INSERT INTO tableB (id, place, name, colD, colF) SELECT (id, greatest(@place := @place + 1, 0) from tableA order by colD desc ON DUPLICATE KEY UPDATE tableB.place = @place, tableB.name = tableA.name, tableB.colD = tableA.colD, tableB.colF = tableA.colF;

运气不好,

有关于如何执行此操作的任何指示吗?

最佳答案

为什么不使用 View 来实现此目的?

create view tableb as 
SELECT (id, greatest(@place := @place + 1, 0) from tableA order by colD desc;

这种方式会出现更少的问题,因为它会自动更新。

MySQL documentation

关于mysql - 使用 ON DUPLICATE KEY UPDATE 排序的表上的子 SELECT 执行 INSERT INTO 表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1154979/

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