我遇到了一个复杂的问题,一个数据库中的数据有三个表。
First_DB插入一个数据库的不同表数据到其他数据库的单表
-- default_users
id username email password
1 Timbog [email protected] vads7y3kkjdfa
2 Marta [email protected] 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 [email protected] vads7y3kkjdfa 1320229733.jpg
2 Marta [email protected] 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中的seeparte中的两个表可能有多个记录我们如何将它们设置为最后一个条目? 感谢
或者我们可以一个接一个地做,patty方法将所有数据从一张表插入到另一张表,而没有冲突表,并且当它完成匹配fk和相册键并插入它时,仍然需要处理那些多个值 –
如果我删除用户表的主键作为唯一键,会有什么帮助?我们可以这样做吗? –
查询确实取决于您试图实现的内容。如果内部连接查询产生一个“缺少”行或具有“重复”行的集合,那么可以解决这个问题。我们可以使用OUTER连接来避免“丢失”行,或者我们可以通过在SELECT列表中使用相关子查询来避免连接。为了避免“重复”行,我们可以在SELECT列表中使用GROUP BY和聚合表达式,或者(再次)使用相关子查询。这真的取决于你想要返回的结果。 – spencer7593