2015-11-01 56 views
0

我有一個表創建1,其中用戶輸入的記錄(表1): table1的MySQL的表自動創建3個記錄時用戶在另一個表

id name date  desc amt 
1 fred 11/30/2015 Bridge 123 
2 fred 11/30/2015 Tunnel 234 

我需要通過表1來解析和創建3條記錄在表2 (或者,如果名稱/日期/降序已經存在,更新AMT字段): 表2

id name date  desc sortorder amt 
3 fred 11/30/2015 Bridge 1   123 
4 fred 11/30/2015 Bridge 2   123 
5 fred 11/30/2015 Bridge 3   123 
6 fred 11/30/2015 Tunnel 1   234 
7 fred 11/30/2015 Tunnel 2   234 
8 fred 11/30/2015 Tunnel 3   234 

ID在每個表是一個AI鍵。名稱和日期是索引和外鍵。 什麼是最有效的方法來做到這一點? 謝謝!

回答

1

你會插入記錄爲:

insert into table2(name, date, desc, sortorder amt) 
    select t1.name, t1.date, t1.desc, n.n, t1.amt 
    from table1 t1 cross join 
     (select 1 as n union all select 2 union all select 3) n 
    on duplicate key update amt = values(amt); 

注:爲on duplicate key update部分工作,你需要一個唯一索引任何定義重複,也許是:

create unique index unq_table1_4 on table1(name, date, desc, sortorder); 
+0

完美地工作.. 。非常感謝! – Viking

相關問題