我有一个用户输入记录( table1 )的表:table1
id name date desc amt
1 fred 11/30/2015 Bridge 123
2 fred 11/30/2015 Tunnel 234我需要通过table1解析并在table2中创建3条记录(或者如果名称/date/desc已经存在,更新amt字段):table2
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键。名称和日期被编入索引和外键。做这件事最有效的方法是什么?谢谢!
发布于 2015-11-01 17:29:22
您可以将记录插入如下:
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);https://stackoverflow.com/questions/33464881
复制相似问题