Sql 如何连接两个不同表的列
我有两张表,分别是“概述”和“当前电压”。我想在一个表输出中获得两个不同表的前1条记录 sql查询Sql 如何连接两个不同表的列,sql,sql-server,Sql,Sql Server,我有两张表,分别是“概述”和“当前电压”。我想在一个表输出中获得两个不同表的前1条记录 sql查询 select top 1 VL1,VL2,VL3 from current_voltage where deviceimei ='233' order by devicetimestamp desc union select top 1 OTI,WTI,ATI from overview where deviceimei ='233'
select top 1 VL1,VL2,VL3 from current_voltage
where deviceimei ='233'
order by devicetimestamp desc
union
select top 1 OTI,WTI,ATI from overview
where deviceimei ='233'
order by devicetimestamp desc
请求操作
VL1,VL2,VL3,OTI,WTI,ATI
234,235,234,25,24,25
一个简单的连接就可以了。我们开始:
SELECT TOP 1 cv.VL1, cv.VL2, cv.VL3, ov.OTI, ov.WTI, ov.ATI
FROM current_voltage cv
JOIN overview ov
ON cv.deviceimei = ov.deviceimei
WHERE cv.deviceimei ='233'
ORDER BY cv.devicetimestamp DESC, ov.devicetimestamp DESC
要阅读有关sql中联接的更多信息,请参阅您需要两个查询的交叉联接:
select t1.*, t2.*
from (
select top 1 VL1,VL2,VL3 from current_voltage
where deviceimei ='233'
order by devicetimestamp desc
) t1 cross join (
select top 1 OTI,WTI,ATI from overview
where deviceimei ='233'
order by devicetimestamp desc
) t2
也可以使用横向连接:
select vc.*, ov.*
from current_voltage cv cross apply
(select top (1) ov.*
from overview ov
where ov.deviceimei = cv.deviceimei
order by ov.devicetimestamp desc
) ov
where ov.deviceimei ='233'
order by cv.devicetimestamp desc;