在IF条件语句中选择

时间:2013-03-21 12:33:51

标签: sql oracle select if-statement

我想放入if条件选择查询:

IF ( 10 in (select id from ids where ..) ) then ...
/*  */
END IF;

如何以正确的语法实现?

3 个答案:

答案 0 :(得分:1)

如果您使用的是SQL Server,那么显而易见的方法是使用EXISTS,例如

if exists(select id from ids where id = 10)
begin
    print 'it exists'
end

另一种方法是使用等效关键字SOME or ANY

if 10 = some(select id from ids)
begin
    print 'it exists'
end

答案 1 :(得分:0)

这可能有所帮助 - 所有示例都等同于Oracle SQL中的IF。

案例表达:

SELECT deptno, empno, ename
     , (CASE WHEN deptno = 10 THEN 1 ELSE 0 END) check_dept
  FROM scott.emp
ORDER BY 1
/

DECODE()函数:

SELECT deptno, empno, ename, DECODE(deptno, 10, 1, 0) check_dept
  FROM scott.emp
ORDER BY 1
/

你的例子 - CASE ..:

select id, (CASE WHEN id = 10 THEN 1 ELSE 0 END) AS check_id from ids where... 
/

答案 2 :(得分:-1)

for ( -- 
      -- The following select statement returns
      -- records only, if there are any whose
      -- ID = 10.
      -- The rownum = 1 condition makes sure that
      -- at most one record is returned.
      --
      select null 
       from ids
      where id = 10 and
            rownum = 1) loop

      /* 
         Do something if at least on record is selected
         by the select statement.
       */

end loop;

虽然这个“解决方案”应该按照你的意愿行事,但我不一定建议这样做,因为对于后来的代码维护者来说,它本质上可能不清楚这个for ... loop的目的是什么是。您可能需要考虑使用一个变量,您可以使用id=10选择记录计数,并根据cnt>0执行操作。