如何在SQL中添加基于参数的条件左连接或内连接?

时间:2014-05-17 14:48:43

标签: sql

我正在尝试根据select语句中的参数添加条件左连接或内连接。

例如:

我有TableA和TableB,我有一个名为@test的参数,

我想做这样的事情:

SELECT * FROM TableA
IF(@test ='')
 INNER JOIN TableB
ELSE
LEFT OUTER JOIN TableB

是否可以在SQL Server 2012中使用?

2 个答案:

答案 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 <> '')