2012-03-23 51 views
1

你知道,你可以像這樣複製一個表中的條目;如何在MySQL中通過INSERT插入許多獨特的行?

INSERT INTO `clubs`(`id_leagues`, `name`, `created`) SELECT id_leagues, name, created FROM clubs WHERE id = 36 LIMIT 1 

..where我的主鍵「身份證」是AUTO_INCREMENT整數

我的問題是,有沒有一種方法來創建...說10項類似的方式,不使用循環在我的PHP腳本。也許在MySQL循環?

感謝您的幫助

UPDATE

應該插入同一列的10倍。

回答

0

沒問題:)在select語句中選擇多個tupel。

INSERT INTO "table" ("col1", "col2", ...) 
SELECT "col3", "col4", ... 
FROM "table2" 
1

如果你想插入10個記錄在相同的條件:

INSERT INTO `clubs`(`id_leagues`, `name`, `created`) 
SELECT id_leagues, name, created FROM clubs WHERE id = 36 LIMIT 10 

並與另一條件:

INSERT INTO `clubs`(`id_leagues`, `name`, `created`) 
SELECT id_leagues, name, created FROM clubs WHERE id IN (36,37,38,40,45,55) 

而在PHP中,如果你的查詢過於複雜,使用INSERT INTO ... SELECT ,您可以選擇所需的數據,形成一個批量插入查詢並執行它:

$query = "SELECT id_leagues, name, created FROM clubs WHERE id = 36 LIMIT 1"; 
$result = mysql_query($query); 
$row = mysql_fetch_array($result, MYSQL_NUM)); 
$data = array_fill(0, 9, "('".mysql_real_escape_string($row[0])."', '".mysql_real_escape_string($row[1])."', '".mysql_real_escape_string($row[2])."')"); 

$query = "INSERT INTO `clubs`(`id_leagues`, `name`, `created`) VALUES " . implode(',', $data); 

mysql_query($query); 
+0

不,不適用於限制10.我不想插入不同的列,但同樣10次。 – helle 2012-03-23 09:30:33

+0

如果可以使用PHP,我會選擇使用它的一行,準備批量插入並執行它。 – Minras 2012-03-23 10:02:14

+0

是的,我知道如何做到這一點。問題是,你如何處理與MySQL的問題... – helle 2012-03-23 10:08:39