2012-09-19 8 views
2

我一直在尋找一種方式來複制行,然後將其插入回到談判桌前,但值不同的ID(其類型爲自動遞增)。任何MySQL命令複製除auto_increment列之外的行?

我可以通過手動指定每列來做到這一點,但由於列數很多,而且以後可以添加或刪除列,所以我想使用一些簡單的查詢來做到這一點,而無需指定每列名稱。

回答

3

試試這個:

CREATE TEMPORARY TABLE temp_table SELECT * FROM source_table WHERE ...; 
ALTER TABLE temp_table DROP COLUMN column_with_auto_increment; 
INSERT INTO source_table SELECT * from temp_table; DROP TABLE temp_table; 
+0

很好,看起來好主意......任何方式,雖然,僅僅使用一個命令行的?我還記得使用很多臨時表並不經常使用....我想這個答案給了我一個想法。 – Codemole

+0

恐怕沒有其他辦法,因爲你不想列出所有可能的領域。 – Serge

0

嘗試

INSERT INTO new_table (attr1, attr2, attr3) SELECT oldatr1, oldatr2, oldatr3 FROM old_table WHERE <the filter you want> 

它也可以,如果NEW_TABLE工作,OLD_TABLE是相同的。

+0

不....我在這個問題已經說了,我知道這種方式。我在尋找的是不必指定每一列的方法。 – Codemole

+0

反正,我不喜歡看到那些誰試圖回答得減去有用的價值,所以只是做了+1 – Codemole