我有3个数据库,我想从2 db获取数据并插入另一个1,但我有一些问题。
Database1"第一":表"物品":
当您需要插入从其他表中选择的数据时,您可以使用下一种方法:
-
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);
- INSERT INTO SELECT语法放错了地方
- 为了将整个表插入到另一个表中,两者必须共享兼容的列。计数和类型。
这些表看起来有点杂乱无章,但如果你想要完成它,正确的查询应该如下
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;
应该允许您一次将所有条目插入目标表