SQL Server:如何在主查询中选择子查询列

时间:2015-12-10 07:47:45

标签: sql sql-server tsql

我有一个查询来选择办公室的特定日期。

select 
    a.sat_date, 
    b.officeid 
from  
    OfficeHours a 
where 
    sat_date = '9:30 AM'
    and officeik in (select OfficeIK from office where officeid = 50000) b

我需要在主查询中选择子查询列officeid。上面的查询会抛出syntax error.

感谢您的帮助。

3 个答案:

答案 0 :(得分:4)

您不能在子查询中使用officied列,因为该子查询选择列表不包含此列,而且还包括它在where条件中的原因,而不是某些连接/应用。

相反,您可以加入该子查询并使用它像这样的列:

select 
    a.sat_date,
    b.officied 
from OfficeHours as a
    inner join (select * from office where officeid = 50000) as b on b.officeik = a.officeik
where a.sat_date = '9:30 AM'

或(甚至更简单,更自然):

select 
    a.sat_date,
    b.officied 
from OfficeHours as a
    inner join office as b on b.officeik = a.officeik
where 
    a.sat_date = '9:30 AM'
    and b.officeid = 50000

答案 1 :(得分:1)

您可以使用内部联接:

select a.sat_date ,b.officied
 from OfficeHours a inner join office b on(a.officeik=b.OfficeIK)
  where a.sat_date = '9:30 AM' and b.officeid=50000

答案 2 :(得分:1)

您可以使用INNER JOIN,如果您想使用子查询,可以试试这个:

select a.sat_date, 50000 AS officeid
from OfficeHours a
where sat_date = '9:30 AM'
   and officeik in
   (select OfficeIK from office where officeid = 50000)