SQL Server:如何使用distinct将这两个查询合并在一起

时间:2018-03-30 19:21:46

标签: sql sql-server sql-server-2012

我有一个获取不同deviceID列表的查询,现在我想将该查询与另一个具有内部联接的查询联系起来。

这是我的第一个查询

Select distinct deviceid 
from session 
where cast(createdon as date) between '01/01/2018' and '01/30/2018' 
  and len(deviceid) > 10

该查询返回我需要的不同DeviceId。我现在想要使用该查询中的DeviceID并将其替换为此查询中的DeviceID

第二次查询:

select f.PracticeID, F.Name, D.DeviceID, d.SerialNumber 
from device d
inner join facility f on f.id = d.locationid
inner join session s on s.deviceid = d.deviceid 
where d.deviceID = 'deviceID'

我如何合并那些2?我想从第一个查询中获取结果并将其用于第二个查询DeviceID列。现在我在第一个查询中手动执行DeviceID。我正在使用SQL Server 2012

2 个答案:

答案 0 :(得分:2)

您想从第二个查询中获取第一个查询中与第一个查询不同的DeviceID的所有数据吗?这应该做到。

select f.PracticeID,F.Name,D.DeviceID,d.SerialNumber from device d
inner join facility f on f.id=d.locationid
inner join session s on s.deviceid=d.deviceid 
where d.deviceID in (
     Select distinct deviceid from session where cast(createdon as date) between 
     '01/01/2018' and '01/30/2018' and len(deviceid)>10
)

答案 1 :(得分:1)

您可以使用子查询来实现此目的: -

select f.PracticeID,F.Name,D.DeviceID,d.SerialNumber from ( Select distinct deviceid from session where cast(createdon as date) between 
'01/01/2018' and '01/30/2018' and len(deviceid)>10) d
inner join facility f on f.id=d.locationid
inner join session s on s.deviceid=d.deviceid 
where d.deviceID='deviceID'