我想放入if条件选择查询:
IF ( 10 in (select id from ids where ..) ) then ...
/* */
END IF;
如何以正确的语法实现?
答案 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
执行操作。