我有两个不同来源的两个独立数据库,但是具有相同的数据类型和行,我可以将它的两个数据都返回到一个数组,以便将它们作为一个来源使用吗?
答案 0 :(得分:2)
如果2个数据库位于同一台服务器上,并且两个表的结构相同,则可以使用UNION:
SELECT *
FROM `database1`.`table1`
WHERE `condition1`
UNION
SELECT *
FROM `database2`.`table2`
WHERE `condition2`
将database1,database2,table1,table2,condition1和condition2替换为您的实际值。
答案 1 :(得分:1)
(感谢biziclop和bfavaretto上面的评论 - 但发布的答案是为了挽救其他人的答案。)
摘要:使用联合表(http://dev.mysql.com/doc/refman/5.0/en/federated-storage-engine.html)和UINION(或JOIN)。
详细说明:
假设您有一个“主要”(本地)MySQL表和一个辅助“远程”数据库。在“主要”MySQL二进制文件中,将其编译为“联合表” - 这允许您访问远程服务器上的表,就像它们是本地的一样。默认情况下不启用联合表。
然后在主数据库中创建一个表,其结构与远程数据库中的表完全相同,但将“CONNECTION”字符串添加到create table指令的末尾。这将把它设置为联合表,并实际从远程服务器获取数据。
然后使用主表和联合表(或JOINS,取决于你想要的)之间的UNION查询主服务器,这将返回一组结果,就好像它只来自主服务器一样,即使它也从遥控器获取数据。
请注意,它不是非常有效,在手册中有关于如何进行多个查询的警告(例如,在每次调用之前以“SHOW TABLES”开头,并且它可能返回比所需更多的行,创建本地临时表等)。