将两个单独的 MySQL 数据库表组合在一个数组中


combining two separate mysql databases tables in an array

我有两个来自不同来源的独立数据库,但具有相同的数据类型和行,我可以将它的两个数据返回到一个数组中以将它们作为一个源处理吗?

如果 2 个数据库位于同一台服务器上,并且两个表的结构相同,则可以使用 UNION:

SELECT *
FROM `database1`.`table1`
WHERE `condition1`
UNION
SELECT *
FROM `database2`.`table2`
WHERE `condition2`

将数据库 1、数据库 2、表 1、表 2、条件 1 和条件 2 替换为实际值。

(感谢Biziclop和bfavaretto上面的评论 - 但作为答案发布以将其他人从半答案中拯救出来。

摘要:使用联合表 (http://dev.mysql.com/doc/refman/5.0/en/federated-storage-engine.html) 和 UINION(或 JOIN)。

详:

假设您有一个"主"(本地)MySQL 表和一个辅助"远程"数据库。在您的"主"MySQL二进制文件中,将其编译为"联合表" - 这允许您访问远程服务器上的表,就好像它们是本地的一样。默认情况下不启用联合表。

然后在主数据库中创建一个与远程数据库中的表结构完全相同的表,但在创建表指令的末尾添加"CONNECTION"字符串。这会将其设置为联合表,并实际从远程服务器获取数据。

然后查询主服务器,在主表和联合表(或 JOINS,具体取决于您要的内容)之间使用 UNION,这将返回一组结果,就好像它仅来自主服务器一样,即使它也从远程获取数据。

请注意,它的效率不是很高,手册中警告它如何进行多个查询(例如,在每次调用之前以"SHOW TABLES"开头,它可能会返回比预期更多的行,创建本地临时表等)。