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
これは役立つ場合があります。すべての例は、OracleSQLのIFと同等です。
CASE式:
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
/
あなたの例-ケース..:
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
。