从SQL中两个不同数据库的两个不同表中选择数据?

时间:2015-12-22 05:31:43

标签: mysql sql-server

有三个表'TA'和'TB'两个属于同一个数据库,但第三个表'TC'属于其他数据库。我需要从第三个表'TC'中获取最后一行,并根据在最后一行中获得的数据,我必须从'TA'和'TB'中获取所有数据。请帮我这个,因为有两个数据库。 表的结构: TA(id,usrId)TB(fk_usrId,deviceId,version)TC(版本) 需要选择所有具有最新版本的deviceId。最新版本存储在TC表的最后一行。

4 个答案:

答案 0 :(得分:1)

select ta.id,ta.userid from ta join tb on ta.userid=tb.usrid join tc on tc.version=tb.version and tc.version=(SELECT TOP 1 * FROM tc ORDER BY version DESC)
在这里我选择最后一列基于没有给定的desc根据你的需要使用子查询。这必须是唯一的

答案 1 :(得分:0)

在SQL Server中,如果两个数据库位于同一服务器

SELECT * FROM FirstDB.Schemaname.TA INNER JOIN FirstDB.Schemaname.TC ON TA.userid = TB.user id and TB.version IN (SELECT TOP 1 version FROM SecondDB.Schemaname.TC ORDER BY version DESC)

在SQL Server中,如果两个数据库位于不同的服务器中

然后你必须在另一个服务器中添加一个服务器作为链接服务器,并在上面的查询中也使用服务器限定符

链接服务器参考链接:https://msdn.microsoft.com/en-in/library/ms188279.aspx

答案 2 :(得分:0)

尝试使用SQL Server:

select ta.*, tb.*
from 
(select top 1 version from differentdb..tc order by version desc) t
inner join tb on tb.version = t.version
inner join ta on ta.id = tb.fk_usrId

试试MySQL:

select ta.*, tb.*
from 
(select version from differentdb.tc order by version limit 0,1) t
inner join tb on tb.version = t.version
inner join ta on ta.id = tb.fk_usrId

答案 3 :(得分:0)

首先需要在服务器对象中添加链接服务器,然后编写表名称,如[ServerInstanceName]。[databasename]。[schemaName]。[TableName] 对于这两个表,请遵循FROM Refference of query中的上述语法 其余的代码将是正常的