【发布时间】:2011-01-29 08:01:24
【问题描述】:
我有一个表 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 列都设置为 PRIMARY KEY。我尝试了以下各种版本(移动 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;
运气不好,
关于如何做到这一点的任何指示?
【问题讨论】:
-
度假村是什么意思? RDB 没有排序,您可以在您的选择查询中排序,并通过使用索引来支持这一点
标签: mysql