我正在尝试根据select语句中的参数添加条件左连接或内连接。
例如:
我有TableA和TableB,我有一个名为@test的参数,
我想做这样的事情:
SELECT * FROM TableA
IF(@test ='')
INNER JOIN TableB
ELSE
LEFT OUTER JOIN TableB
是否可以在SQL Server 2012中使用?
答案 0 :(得分:4)
您无法根据参数更改JOIN
的类型,但可以在外部联接中过滤掉NULL
的行。
假设TableB
已加入TableA
上的b.a_id = a.id
。然后你可以写这个查询:
SELECT * FROM TableA a
LEFT OUTER JOIN TableB b
ON b.a_id = a.id
WHERE @test != '' OR b.a_id IS NOT NULL
答案 1 :(得分:2)
不完全(除了使用动态SQL),但您可以在where
子句中执行此操作:
SELECT *
FROM TableA LEFT OUTER JOIN
TableB
ON . . .
WHERE (@test = '' and TableB.id is not null) or (@test <> '')