2009-10-07 85 views
1

我有類似的情況,我需要添加我的連接條件SQL條件語句中的連接查詢

例如,當值是1,那麼內連接到表,如果值2,那麼內部連接表

下面

是我簡單的查詢,我得到錯誤關鍵字附近有語法錯誤「內部」

DECLARE @i INT=1 
select name from emp 
if(@i=1) 
begin 
inner join a on a.ID=emp.ID 
end 
else if(@i=1) 
begin 
inner join b on b.ID=emp.ID 
end 
where emp.ID=2 

謝謝

回答

4

會這樣嗎?外連接在這兩個條件下表和把有條件的在你的SELECT子句,像這樣:

select name, case when @i=1 then a.column else b.column end from emp 
left outer join a on a.ID=emp.ID 
left outer join b on b.ID=emp.ID 
where emp.ID=2 
+0

這可能會產生額外的記錄,因爲額外的連接。 – mjv 2009-10-07 06:49:17

+0

好主意+1,它對我的​​工作感謝 – 2009-10-07 06:57:32

0

當你發現的結構是在SQL非法的。 IF語句不能包含在DML查詢中。然而,人們可以編寫兩個單獨的查詢(在此過程中引入一些重複)並且有條件地選擇

DECLARE @i INT 
SET @i=1 
if(@i=1) 
    begin 
     select name from emp 
     inner join a on a.ID=emp.ID 
     where emp.ID=2 
    end 
    else if(@i=2) 
    begin 
     select name from emp 
     inner join b on b.ID=emp.ID 
     where emp.ID=2 
    end 
+0

@mjv謝謝...... – 2009-10-07 06:59:54