2016-04-14 108 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,或者它将返回所有记录,则完全没有任何记录。

相关问题