1
我想在我的select語句中添加基於參數的條件左連接或內連接。如何在SQL中添加基於參數的條件左連接或內連接?
例如:
我有表A和表B,和我有一個叫@測試參數,
我想要做這樣的事情:
是可以在SQL Server 2012?
我想在我的select語句中添加基於參數的條件左連接或內連接。如何在SQL中添加基於參數的條件左連接或內連接?
例如:
我有表A和表B,和我有一個叫@測試參數,
我想要做這樣的事情:
是可以在SQL Server 2012?
不完全(除使用動態SQL),但你可以做到這一點的where
子句中:
SELECT *
FROM TableA LEFT OUTER JOIN
TableB
ON . . .
WHERE (@test = '' and TableB.id is not null) or (@test <> '')
你不能改變的那種基於參數的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
那麼動態SQL是Gordon Linoff提到的解決方案嗎? – user123456
@Mohammadjouhari動態SQL是* a *解決方案,而非*解決方案。我們的答案都非常相似,建議添加一個有條件的'WHERE'過濾器,將外部聯接轉換爲內部聯接。 – dasblinkenlight
謝謝你們兩位的回答。我很感激。 – user123456