1

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

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

如何以正确的语法实现它?

4

3 回答 3

1

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

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

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

if 10 = some(select id from ids)
begin
    print 'it exists'
end
于 2013-03-21T12:51:57.737 回答
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
/

解码()函数:

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

你的例子 - 案例..:

select id, (CASE WHEN id = 10 THEN 1 ELSE 0 END) AS check_id from ids where... 
/
于 2013-03-21T14:25:34.220 回答
-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.

于 2013-03-21T13:13:22.967 回答