0
我有一个表,tableA,我想诉诸然后插入/更新每个结果行到tableB。目前,我有这样的事情:做一个INSERT INTO tableB与子SELECT对tableB排序与ON DUPLICATE KEY UPDATE
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。我曾尝试以下(移动对重复密钥更新各地条款)的各种版本
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没有排序,您可以在您的选择查询中排序,并通过使用索引来支持 – txwikinger 2009-07-20 18:11:31