我想输入 if 条件选择查询:
IF ( 10 in (select id from ids where ..) ) then ...
/* */
END IF;
如何以正确的语法实现它?
我想输入 if 条件选择查询:
IF ( 10 in (select id from ids where ..) ) then ...
/* */
END IF;
如何以正确的语法实现它?
如果您使用的是 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
这可能会有所帮助 - 所有示例都等同于 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...
/
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
.