我有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)'因为他们来自不同的数据库,所以在查询中
答案 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将为您提供所需的数据,但会牺牲性能。如果您有两个具有相同结构的表,您应该看看是否有办法将数据迁移到单个表中。