2010-11-14 20 views
1

此mysql表具有自動增量字段。我想複製一些行。我想我會用一個臨時表:在沒有枚舉字段的情況下複製mysql表中的行

CREATE TEMPORARY TABLE tmptab SELECT * FROM mytab WHERE somecondition = 1; 

將數據複製回MYTAB我現在可以做一些tmptab更新之前。

UPDATE tmptab ... /* some updates */; 

因爲mytab有一個自動增量字段,我不能簡單地將tmptab的內容複製到mytab。一種解決方案是註冊字段(並省略自動增量字段)。

我正在尋找一個沒有枚舉字段的解決方案。這具有優勢,例如稍後將添加字段。

我我吼聲能夠擦除自動增量領域tmptab(去掉自動增量列),然後使用類似這樣的查詢:

INSERT INTO mytab SELECT * FROM tmptab; 
請問

這項工作? mytab中的自動增量字段應正確設置。還是有更好的方法來做到這一點?

+0

autoindex = auto_increment? – ajreal 2010-11-14 01:53:16

回答

1

我吼聲,我可以擦除tmptab自動索引域(去掉自動索引列),然後使用類似這樣的

你需要使用一個命令這樣的查詢:

UPDATE tmptab SET key_column=NULL 

當您將NULLs插入原始表格時,它會生成新的auto_increment id。

您可能需要添加一條命令以將主鍵索引放置在臨時表上才能使其工作。

+0

它的工作原理,非常感謝! – mit 2010-11-15 11:43:17

相關問題