2016-04-14 110 views
3

我想在某個特定ID的情況下,當兩個不同表中的兩個值中的任何一個大於一個數時,我將顯示一個包含兩個值的行。否則,我不想顯示任何新行。這是什麼正確的語法?什麼是T-SQL語法如果這或那麼那還有什麼不做?

if(select 
     a.Column1 > 2 or 
     b.Column2 > 2 
    from 
     Table1 a join Table2 b on a.ID = b.ID) 
begin 
select 
    a.Column1, 
    b.Column2 
from 
    Table1 a join Table2 b on a.ID = b.ID) 
end 

else 
begin 
    Don't Select 
end 

回答

2

您只需要將其添加爲where條件。如果您的where條件在給定行中失敗,則不會選擇該行。

select 
    a.Column1, 
    b.Column2 
from 
    Table1 a join Table2 b on a.ID = b.ID 
where a.column1 > 2 or b.column2 > 2 
0

@ VKP的答案可能是你想要什麼,而是你已經寫了查詢的直譯 - 不使用控制流語句 - 是這樣的:

select 
    a.Column1, 
    b.Column2 
from 
    Table1 a join Table2 b on a.ID = b.ID 
where exists (select 1 from Table1 c join Table2 d on c.ID = d.ID where c.Column1 > 2 or d.Column2 > 2); 

這既會回報如果連接中的一條記錄沒有Table1.Column1 > 2Table2.Column2 > 2,或者它將返回所有記錄,則完全沒有任何記錄。

相關問題