将一个db的不同表数据插入到其他db的单个表

时间:2016-09-26 14:48:08

标签: mysql inner-join

我遇到了一个复杂的问题,db中的数据有三个表。

First_DB

-- default_users
id  username    email        password
1   Timbog  Timbog@mail.com  vads7y3kkjdfa
2   Marta   Marta@mail.com   vads7y3kkjdfa

-- default_album
album_id   album_name  default_user_id
   1        Name_Tim       1
   3        Katarina       2
-- default_album_img
img_id      image_file    album_id 
  3       1320229733.jpg     1
  4       3320229733.jpg     3

Second_DB

--users
user_id   user_name     user_email       user_pass     user_image
   1        Timbog    Timbog@mail.com   vads7y3kkjdfa  1320229733.jpg 
   2        Marta      Marta@mail.com   vads7y3kkjdfa  3320229733.jpg

我用来解决这个问题的方法是首先通过内连接获取所有数据,如果我使用完全外连接并将所需字段插入到我的表中,以下查询是实际的,我正在尝试使用它WOR:

INSERT INTO bbpin.users ( user_name, user_pin, user_email, user_password, user_img)
SELECT  default_users.username, default_users.bb_pin, default_users.email, default_users.password
FROM bbmpins_pins.default_users
INNER JOIN bbmpins_pins.default_album_images
ON default_album_images.album_id = default_users.id;

我想念我如何在这个连接中比较两个表的id?或者这个查询都是错误的方法? 在First_DB中有两个是sepearte的表,可能有多个记录我们如何将它们中继到最后一个条目? 感谢

2 个答案:

答案 0 :(得分:1)

我没有看到您使用JOIN的当前方法有任何问题,但可以稍微修改它以使其更具可读性,并且您还必须加入关系表

INSERT INTO bbpin.users (user_id, user_name, user_pin, user_email, user_password, user_img)
SELECT du.id,
du.username, 
du.bb_pin,
du.email, 
du.password,
dai.image_file
FROM bbmpins_pins.default_users du
JOIN bbmpins_pins.default_album da ON du.id = da.default_user_id
INNER JOIN bbmpins_pins.default_album_images dai
ON dai.album_id = da.album_id;

答案 1 :(得分:1)

看起来您正在尝试从if(!Click(By.linkText("HR Development"))){return;} if(!Click(By.linkText("ISTQB Agile Tester Extension ( 1/2)"))){return;} 表中检索所有行。并且与每一行一起,还返回default_users表中的相应行。以及来自default_album表的相应行。

给定示例数据,使用内部联接的查询将返回指定的结果:

default_album_img

该查询将适用于示例数据。

但是,如果 SELECT u.id AS user_id , u.username AS user_name , u.email AS user_email , u.password AS user_pass , i.image_file AS user_image FROM default_users u JOIN default_album a ON a.default_user_id = u.id JOIN default_album_img i ON i.album_id = a.album_id 中有一行在default_user中没有匹配的行,则内部联接不会返回该行:

default_album

或者,如果 -- default_users id username email password 3 branstark bran@winterfell warg2 中有两行或更多行与给定用户匹配,则查询将从default_user返回该行的两个副本...

default_album

如果没有规定在这些情况下要返回的内容,我们就不能推荐查询。