如果还有条件在SQL中

这个问题在这里已经有了答案:

  • 如何在SQL SELECT中执行IF ... THEN? 22个答案
  • 你可以在SQL中有if-then-else逻辑吗? [复制] 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
    

    是否可以用变量来实现:

    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。 如果第一个select不包含数据,则运行第二个,如果没有返回数据,则返回0(默认@FLAG值)。


    这应该工作,虽然它不是一个有效的查询,也不是使用这样的查询的最佳实践。

    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;
    
    链接地址: http://www.djcxy.com/p/94345.html

    上一篇: if else condition in sql

    下一篇: Dynamically choose one of two columns based on a third column