我想要一個改進我的sql代碼的好方法,當條件滿足時我必須使用內連接。我目前正在複製代碼:如果條件滿足,SQL會進行內連接
@SystemMerge bit
if (@SystemMerge=1)
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
INNER JOIN systemTable on systemTable.param2=myTable.param2
END
ELSE
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
END
,我想做到在這樣一個辦法:
@SystemMerge bit
BEGIN
SELECT
.......
FROM myTable
INNER JOIN table ON table.param1=myTable.param1
***//the next 4 lines is not working, but this pseudo of what i want:***
if (@SystemMerge=1)
begin
INNER JOIN systemTable on systemTable.param2=myTable.param2
end
編輯: 解決方案(感謝@Damien_The_Unbeliever):
LEFT JOIN systemTable ON systemTable.param2=myTable.param2
WHERE
((@SystemMerge=1 AND systemTable.param2 is not null)
OR
(@SystemMerge=0 OR @SystemMerge is null))
向我們顯示不起作用的代碼。爲什麼它不工作你得到的錯誤是什麼?也許是一些數據的一個例子 –
您可能想要使用動態sql – Elmer
您可以基於條件構建動態查詢並稍後使用EXEC(查詢)執行該查詢。 –