簡體   English   中英

使用插入選擇在動名詞表中插入多行

[英]INSERT MULTIPLE ROWS in Gerund Table using Insert Into Select

我使用 INSERT INTO SELECT 將值(多行)從一個表復制到另一個表。 現在,我的問題是如何將來自不同表的具有相應 ID 的行(因為它已規范化)插入到動名詞表中,因為它只在我的動名詞表中輸出一行。 我應該怎么做才能在動名詞表中插入多行及其對應的 ID。

我的動名詞表代碼是這樣的。

$insert = "INSERT INTO table1 SELECT * FROM sourcetable"; // where id1 is pk of table1.


$result =mysqli_query($conn,$insert)
$id1=mysqli_insert_id($conn);

現在表 1 插入了與其他 2 個表相同的多行。

假設 id.. 是外鍵

INSERT INTO gerundtable (pk, id1,id2,id3) VALUES ($id1,$id2,$id3);

我的問題是它不會產生多行。

根據MySql 文檔

對於多行插入,LAST_INSERT_ID() 和 mysql_insert_id() 實際上從插入的第一行返回 AUTO_INCREMENT 鍵。 這使多行插入能夠在復制設置中的其他服務器上正確復制。

因此,獲取正在復制的記錄數和LAST_INSERT_ID() ,您應該能夠為每個復制的行映射精確的IDs

在以下行中:

$mysqli->query("Insert Into dest_table Select * from source_table");

$n = $mysqli->affected_rows; // number of copied rows

$id1 =  $mysqli->insert_id; // new ID of the first copied row
$id2 = $mysqli->insert_id + 1; // new ID of the second copied row
$id3 = $mysqli->insert_id + 2; // new ID of the third copied row
...

$mysqli->query("INSERT INTO gerundtable (pk, id1,id2,id3) VALUES ($id1,$id2,$id3)");

感謝您嘗試理解並回答我的問題。 我解決了我自己的代碼。 我使用 while 循環來獲取每一行的 id,並沒有使用 INSERT INTO SELECT。 這里是運行。 因為我只是用我的手機裸機發帖。

 $sqlselect = SELECT * FROM table1;
While($row=mysqli_fetch_array(table1){
    $insertquery...
    $id1=mysqli_insert_id($conn)

    $insertgerundtable = INSERT INTO gerundtable VALUES ( $id1, $id2);
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM