首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >当用户在另一个表中创建一个记录时,mysql会自动在表中创建3个记录

当用户在另一个表中创建一个记录时,mysql会自动在表中创建3个记录
EN

Stack Overflow用户
提问于 2015-11-01 17:17:25
回答 1查看 63关注 0票数 0

我有一个用户输入记录( table1 )的表:table1

代码语言:javascript
复制
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

代码语言:javascript
复制
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键。名称和日期被编入索引和外键。做这件事最有效的方法是什么?谢谢!

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-11-01 17:29:22

您可以将记录插入如下:

代码语言:javascript
复制
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部分工作,您可能需要对任何定义重复的内容建立唯一的索引:

代码语言:javascript
复制
create unique index unq_table1_4 on table1(name, date, desc, sortorder);
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/33464881

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档