【问题标题】:mysql automatically create 3 records in table when user creates 1 in another table当用户在另一个表中创建 1 条时,mysql 自动在表中创建 3 条记录
【发布时间】:2015-11-01 17:17:25
【问题描述】:

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

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

我需要解析 table1 并在 table2 中创建 3 条记录(或者如果 name/date/desc 已经存在,则更新 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 键。名称和日期是索引和外键。 最有效的方法是什么? 谢谢!

【问题讨论】:

    标签: mysql


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 2021-12-23
      • 2020-08-02
      • 1970-01-01
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-12-03
      • 1970-01-01
      相关资源
      最近更新 更多