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