Mysql
MySQL 使用新 ID 插入兩個表
我正在嘗試選擇數據庫中已經存在的數據,並使用表一中生成的 ID 將其插入到兩個表中。
table1
包含配置選項,table2
包含定價數據。Table2
使用來自 的自動 IDtable1
。我有所有這些產品,
Table1
我必須在該表的另一個組中使用相同的配置選項,但 WHMCS 沒有配置選項的副本。我正在考慮進入表並執行這樣的選擇查詢:
INSERT INTO tblproductconfigoptionssub ( id , configid , optionname , sortorder , hidden ) SELECT NULL , 76 , optionname , sortorder , hidden FROM tblproductconfigoptionssub WHERE configid = 41
這適用於第一個表中的數據,方法是從配置組 id 41 中選擇所有記錄並重新插入它們,但現在它們已連結到配置組 76。
表 2 包含定價數據,它有一個名為的列,該列
relid
連結到從上面的 tblproductconfigoptionssub 生成的 ID。表 2 已經在其原始 ID 下為表 1 中的項目定價。必須複製 Table2 中的記錄,但使用上面查詢生成的新 ID。
如何修改上面的語句以將新數據連同價格一起插入到 Table2 中?
我真的不想為此做一個 PHP 腳本。但是,我認為我需要創建一個 MySQL 函式來從配置組 41 中選擇所有項目,然後將值儲存在變數中。然後插入到兩個表中。
INSERT
有沒有辦法用語句來做到這一點?
查詢執行後,您將擁有一組複製的行(帶有
configid=41
)和一組相同的粘貼行(除了configid=76
和 auto-createdid
)。由於這些 id 事先不知道,因此您需要另一種方法來辨識配置表的行,例如唯一鍵(除了自動遞增的鍵),因此您可以將新創建的行與舊的。
例如,如果
(configid, optionname)
是唯一的,那麼以下將起作用:INSERT INTO pricing ( relid, price, ... ) --- relid and all the other columns, --- except any autoincrement you may have SELECT pasted.id, p.price, .... --- and the same columns here FROM pricing AS p JOIN tblproductconfigoptionssub AS copied ON copied.id = p.relid AND copied.configid = 41 JOIN tblproductconfigoptionssub AS pasted ON pasted.optioname = copied.optioname AND pasted.configid = 76 ;