MySQL如何从多个表获取数据并插入到其他表中?



我有3个数据库,我想从2 db获取数据并插入另一个1,但我有一些问题。

Database1"第一":表"物品":

<表类> id 名称 价格 tbody><<tr>1水晶302Ruby20

当您需要插入从其他表中选择的数据时,您可以使用下一种方法:

  • first:构建选择应该插入的数据的查询。在你的情况下,In可以是下一个:

    SELECT 1, items.id, items.name, shop.name
    FROM first.items
    JOIN second.shop ON shop.id = items.id
    WHERE items.id = 1;
    
  • second:将查询与INSERT语句组合,如:

    INSERT INTO third.details (id, items_id, items_name, shop_name) 
    SELECT 1, items.id, items.name, shop.name
    FROM first.items
    JOIN second.shop ON shop.id = items.id
    WHERE items.id = 1;
    

rename column: Database 2 'second': Table 'Shop':物品。id toitem_id

Database 3 'third': Table 'Details':Set id as auto increment

使用join组合前两个表:

SELECT items.id,items.name,shop.name FROM shop as shop left join items as items on items.id = shop.item_id WHERE items.id = 1, 
INSERT INTO third.details (items.id,items.name,shop.name) 
VALUES (first.items.id,first.items.name,second.shop.name);
  1. INSERT INTO SELECT语法放错了地方
  2. 为了将整个表插入到另一个表中,两者必须共享兼容的列。计数和类型。

这些表看起来有点杂乱无章,但如果你想要完成它,正确的查询应该如下

INSERT INTO `third`.`Details` (`items.id`, `items.name`, `shop.name`)
SELECT  `second`.`Shop`.items_id, `first`.`items`.name, `second`.`Shop`.name
FROM `first`.`items`, `second`.`Shop`
WHERE `second`.`Shop`.id = 1 and `first`.`item`.id = 1;

也将where子句更改为

`second`.`Shop`.id = `first`.`items`.id;

应该允许您一次将所有条目插入目标表

最新更新