【问题标题】:mysql - call to insert into another table on every value of selectmysql - 调用以在每个选择值上插入另一个表
【发布时间】:2014-08-27 01:42:51
【问题描述】:

我目前正在将旧数据库架构中的数据迁移到新架构中。

我的旧数据库上有一个名为 Product 的表,在我的新数据库架构上,我仍然有一个 Product 表和一个用于 b_id 的新列,以及另一个表 B

在迁移期间,我需要为表中的每个产品插入表 B 的条目,并更新 Product 表以设置 b_id 为该产品在 b 上新创建的条目.我怎样才能做到这一点?

要传输产品表的数据,我有:

INSERT INTO newSchema.Product
SELECT id, prodName 
FROM oldSchema.Product

我正在考虑循环进入oldSchema.Product,对于每个产品,都调用INSERT INTO BUPDATE TABLE Product,但不知道如何将其放入代码中。

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • 你必须给我们更多的东西才能继续下去

标签: mysql sql database data-migration


【解决方案1】:

B 表也是如此……

INSERT INTO newschema.B (product_id)
SELECT      id
FROM        oldschema.product

已编辑

CREATE TABLE newschema.b (
         id INT NOT NULL AUTO_INCREMENT,
         product_id INT,
         PRIMARY KEY (id)
         );

CREATE TABLE newschema.product (
         id INT NOT NULL AUTO_INCREMENT,
         name VARCHAR(35) NOT NULL,
         b_id INT,
         PRIMARY KEY (id),
         FOREIGN KEY (b_id) REFERENCES b(id)
         );

INSERT INTO newschema.b (product_id)
SELECT      product_id
FROM        oldschema.product ;

INSERT INTO newschema.product (id, name, b_id)
SELECT      OP.id,
            OP.name,
            NB.id
FROM        oldschema.product AS OP,
            newschema.b AS NB
WHERE       NB.product_id = OP.id ;

【讨论】:

  • 我不明白你的意思,但试试这个告诉我(注意:我没有测试它)
猜你喜欢
  • 2016-06-30
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-05-15
  • 2015-05-28
  • 2016-03-27
  • 2013-08-15
相关资源
最近更新 更多