2011-03-29 33 views

回答

2

如果您沒有PRIMARY KEY或UNIQUE索引,應該這樣做。

INSERT INTO table SELECT * FROM table; 

如果你有這樣的指標,簡單地列出表中的所有不具備這些索引的列。例如。如果colA具有獨特的或主鍵索引:

INSERT INTO table (colB, colC) SELECT colB, colC FROM table; 

請注意,如果您的ID列(可樂)有AUTO_INCREMENT屬性集,這隻會工作(這通常是整數ID列的情況下)。如果不是,那麼你運氣不好。在這種情況下,您不能使用INSERT INTO ... SELECT來重複行,因爲您需要手動提供唯一索引。

1

在口頭上, 使用選擇得到的一切,不是使用插入....

+0

可以給我這個例子 – user655334 2011-03-29 12:50:45

1
INSERT INTO table (SELECT * FROM table) 

您必須排除主鍵。

INSERT INTO table (col1, col2) SELECT col1, col2 FROM table; 

請勿選擇主鍵。

您必須提及除主鍵以外的所有字段。我相信你有一個自動增量列不要在上面的命令中提到那個列,但包括所有其他列。

+0

@shakti:它顯示錯誤 - 重複條目'8943'的關鍵1 – user655334 2011-03-29 12:52:29

+0

@ user655334:如果有一個唯一鍵(或主要KEY),該行不能存在兩次。在這種情況下你想發生什麼?嘗試'INSERT INTO表(SELECT * FROM表)' – Konerak 2011-03-29 12:53:54

+0

@user:你必須從選擇中排除主鍵 – 2011-03-29 12:54:58

0

一個簡單的方法來複制在同一個表中的所有行:

INSERT INTO yourtable() 
SELECT * FROM yourtable; 

,如果你沒有在表中的任何唯一鍵這OFC纔有效。

1

你不應該那樣做。
保持你的表格在正常形式,這意味着沒有重複。

1

我同意Col. Shrapnel:你不應該這樣做

桑德猜中了:

如果你想這樣做
  • INSERT INTO table SELECT * FROM table是去
  • 如果有PRIMARY自動增量鍵值的方式 ,insert into table (all-but-key) select all-but-key from table
  • 如果有其他唯一鍵,你不能這樣做。

另一個骯髒的解決方法:

SELECT * FROM TABLE UNION ALL SELECT * FROM TABLE 

你可以在對基本的數據庫設計規則的行把它放進一個視圖或合併表...

相關問題