2014-05-17 39 views

回答

2

不完全(除使用動態SQL),但你可以做到這一點的where子句中:

SELECT * 
FROM TableA LEFT OUTER JOIN 
    TableB 
    ON . . . 
WHERE (@test = '' and TableB.id is not null) or (@test <> '') 
4

你不能改變的那種基於參數的JOIN的,但你可以過濾掉行與NULL s在一個外連接中。

假設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 
+0

那麼動態SQL是Gordon Linoff提到的解決方案嗎? – user123456

+0

@Mohammadjouhari動態SQL是* a *解決方案,而非*解決方案。我們的答案都非常相似,建議添加一個有條件的'WHERE'過濾器,將外部聯接轉換爲內部聯接。 – dasblinkenlight

+0

謝謝你們兩位的回答。我很感激。 – user123456