if if条件在sql中

时间:2016-01-05 14:52:31

标签: c# sql sql-server

我想编写一个执行以下操作的SQL查询:

if此查询(select X from table1 where x = 'value1')的结果返回1 else if (select x from table2 where x = 'value2')有任何结果返回2,否则返回0。

由于

4 个答案:

答案 0 :(得分:7)

一种方法是selectcase

select (case when exists (select X from table1 where x = 'value1')
             then 1
             when exists (select x from table2 where x = 'value2')
             then 2
             else 0
        end) as flag

答案 1 :(得分:1)

是否可以使用变量实现:

DECLARE @FLAG INT = 0;

SELECT @FLAG = 1 FROM table1 WHERE x = 'value1'

IF @FLAG = 0 
BEGIN
    SELECT @FLAG = 2 FROM table2 WHERE x = 'value2'
END

SELECT @FLAG

@FLAG变量将保留值0,1或2,因为表包含或不包含数据。如果第一个选择不包含数据,则运行第二个,如果没有返回数据,则返回0(默认@FLAG值)。

答案 2 :(得分:0)

虽然它不是一种有效的查询,也不是使用这类查询的最佳做法,但这应该有效。

select 
    case when exists (select X from table1 where x = 'value1') then 1 
    when exists (select x from table2 where x = 'value2') then 2 
    else 0 
end;

答案 3 :(得分:0)

当查询很短时,选择案例是解决这种情况的更好方法。但是当查询很长且很复杂时,我喜欢使用用户定义的函数,如:

如果dbo.QueryExecution()为空     - 做一点事 其他     - 什么东西

dbo.QueryExecution()可以执行您的查询 从table1中选择X,其中x ='value1'。

通过这种方式,可以更轻松地测试和维护查询(至少对我来说更容易)。