如何在SQL Server中的每个内部联接中应用where条件

时间:2016-07-01 18:30:31

标签: sql-server

我想在每个内连接上应用条件,如下所示

write()

但是在条件

的第二个错误被抛出
  

关键字' inner'附近的语法不正确。

在SQL Server中加入非常新。有什么帮助吗?

3 个答案:

答案 0 :(得分:2)

使用inner join所有条件都适用于完整记录集。所以你可以把它们全部放在where子句

select * 
from table1 table 
inner join table2 t on t.column= table.column
inner join table3 tb on tb.column = table.column 
where condition1 and condition2

但是例如在使用left join时,条件仅适用于连接本身。所以你可以像这样使用on子句

select *
from table1 table 
left join table2 t on t.column = table.column AND condition1
left join table3 tb on tb.column = table.column AND condition2

答案 1 :(得分:2)

您需要在语句末尾添加WHERE子句,但是您可以在内连接中执行此操作:

select * from table1 table 
 inner join table2 t on t.column= table.column 
      and t.someColumn = 'SomeValue' --Here you can join on a condition
 inner join table3 tb on tb.column = t.column 
 where <condition>


--Or...

select * from table1 table 
 inner join table2 t on t.column= table.column 
 inner join table3 tb on tb.column = t.column 
where
 t.column = 'blah'
 and tb.column = 'blah2'

答案 2 :(得分:0)

如果您希望保持主要查询的清晰,可以使用CTE对您的表进行逻辑过滤,远离主要查询:

;with Employees as
(
    select * from People where PersonType = 'Employee'
)
select * from ParkingSpots ps
join Employees e on ps.PersonID = e.PersonID