使用来自2个数据库的表进行查询

时间:2013-06-26 02:42:46

标签: php mysql

我有3个表,t1,t2和t3。 ti和t2在数据库D1中。但是表t3包含在数据库D1和D2中,就像D1,t3中的大约5个记录和D2.t3中的其余5一样。

全表t3实际上是来自D1和D2的同一表(即t3)的记录的组合

查询应该像;

select t1.*,t2.* from D1.t1,D1.t2 where t1.aid=t3.cid and t3.id IN(1,2,4) and  t1.aid=t2.bid

问题是如何提供' t3.cid和t3.id IN(1,2,4)'因为他们来自不同的数据库,所以在查询中

1 个答案:

答案 0 :(得分:0)

MySQL数据库主要用于组织和权限分片。将多个数据库中的表连接成单个查询的开销非常小。

SELECT *
    FROM D1.t1 as d1t1
    INNER JOIN D1.t2 as d1t2 ON d1t1.aid = d1t2.bid
    INNER JOIN D2.t3 as d2t3 ON <your join condition here>
    INNER JOIN D1.t3 as d1t3 ON <another join condition>
WHERE
    d1t3.id IN (1,2,3)

您没有在原始问题中指定连接条件,但此查询应该让您开始。


阅读完评论后,您需要的是UNION:

(SELECT t3.* FROM D1.t3) UNION (SELCT t3.* FROM D2.t3)

您需要在每个UNION子句中重复上面的连接条件。

但您应该查看数据库结构。 UNION将为您提供所需的数据,但会牺牲性能。如果您有两个具有相同结构的表,您应该看看是否有办法将数据迁移到单个表中。