从两个表创建新表,第一个表中的多个列替换为第二个表中的列

时间:2011-04-10 16:54:23

标签: mysql insert

我需要将数据插入到新表中,该表是从名为Table1和Table2的两个现有表构造的字段,如下所示。 path1和path2来自Table2,但引用存储在Table1中。不应更改表1,因为Table2的路径字段将被更改。

New Table
id path1 path2
1  /a/b  /a/c
2  /a/d  /a/e


Table1
id path1_id path2_id
1  1        2
2  3        4


Table2
id path
1  /a/b
2  /a/c
3  /a/d
4  /a/e

1 个答案:

答案 0 :(得分:0)

你没有给我们太多的工作,所以这是一个尝试只是为了让boll滚动:

insert 
  into new_table(id, path1, path2)
select t1.id
      ,p1.path
      ,p2.path
  from table1 t1
  join table2 p1 on(p1.id = t1.path1_id)
  join table2 p2 on(p2.id = t1.path2_id)

...基于以下关于您的数据的假设:

  • table1.id是一个唯一的密钥
  • table2.id是一个唯一的密钥
  • new_table.id“继承”来自table1的密钥
  • 来自table1.path1_id => table2.id
  • 的(受信任或强制执行的)外键约束
  • 来自table1.path2_id => table2.id
  • 的(受信任或强制执行的)外键约束