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

これは役立つ場合があります。すべての例は、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... 
/
于 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 に答える