我想在每个内连接上应用条件,如下所示
write()
但是在条件
的第二个错误被抛出关键字' inner'附近的语法不正确。
在SQL Server中加入非常新。有什么帮助吗?
答案 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