0

我有 3 张桌子,t1、t2 和 t3。ti 和 t2 在数据库 D1 中。但是表 t3 包含在两个数据库 D1 和 D2 中,就像一些 5 条记录在 D1,t3 中,其余 5 条在 D2.t3 中。

完整表 t3 实际上是 D1 AND 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)',因为它们来自不同的数据库

4

1 回答 1

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 将为您提供所需的数据,但会牺牲性能。如果您有两个具有相同结构的表,您应该看看是否有办法将您的数据迁移到一个表中。

于 2013-06-26T02:47:43.697 回答