什么是如果这个或那个T-SQL语法那么其他什么都不做?

时间:2016-04-14 18:00:41

标签: sql sql-server

我试图创建一个条件,对于某个ID,当两个不同表中的两个值中的任何一个大于一个数字时,我将显示一个包含两个值的行。否则,我不想显示任何新行。这个的正确语法是什么?

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 个答案:

答案 0 :(得分: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

答案 1 :(得分: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,则会返回任何内容,否则它将返回所有记录。