我试图创建一个条件,对于某个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
答案 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 > 2
或Table2.Column2 > 2
,则会返回任何内容,否则它将返回所有记录。