OracleのINについて。
この記事の内容はコチラです
- OracleのINの使い方
- 複数の値を検索したい
- 複数カラムを検索したい
今回は、Oracleの「IN」について紹介します!
Oracleで複数の値・複数カラムを検索するIN
Oracleで複数の値を複合検索するには「IN」を使用します。今回は「IN」の使い方をいくつか紹介します。
例1. INで複数の値を検索するパターン
--部活が野球部・サッカー部の生徒を検索する SELECT * FROM STUDENT WHERE CLUB IN ('野球','サッカー');
ここでは「IN」を使って「野球部」か「サッカー部」の生徒を検索しました。このように「IN」を使えば、複数の値に一致するレコードを検索することができます。
例2. SELECT結果をINで検索するパターン
--部活が球技の生徒を検索する SELECT * FROM STUDENT WHERE CLUB IN (SELECT CLUB FROM CLUB_MST WHERE BALL_F = 1);
ここでは「IN (SELECT ~ FROM ~)」としています。SELECTした結果を「IN」で検索しています。
カッコ内の「SELECT CLUB FROM CLUB_MST WHERE BALL_F = 1」はクラブマスターテーブルから球技の部活動を検索しています。
カッコ内で球技の部活動をSELECTし、そのSELECTした結果を上位のSQLで「IN」を使って条件指定し、「球技の部活動をしている生徒」を検索しました。
例3. INで否定検索するパターン
--部活が野球部・サッカー部以外の生徒を検索する SELECT * FROM STUDENT WHERE CLUB NOT IN ('野球','サッカー');
INを否定形にするには「NOT IN」とします。「NOT IN (‘野球’,’サッカー’)」で「野球部でもサッカー部でもない生徒」を検索しました。
例4. 複数カラムをINで検索するパターン
--野球部の3年生を検索する SELECT * FROM STUDENT WHERE (CLUB, year) IN ('野球', 3);
INで複数カラムを検索することもできます。複数カラムはカッコつきで指定します。(CLUB, year)で複数カラムを記述し、INの後にさらにカッコつきで値を記述します。ここでは野球部の3年生を検索しました。
--野球部の3年生、サッカー部の2年生を検索する SELECT * FROM STUDENT WHERE (CLUB, year) IN (('野球', 3), ('サッカー', 2)),;
複数カラムは値を複数にもできます。カッコつきで値を指定して、カンマで後ろに追加します。3つの値を検索すると、こんな感じになります。 →((A, 1), (B, 2), (C, 3))
「IN」をつかって複数の値を検索をすることができました。
以上、Oracleで複数の値を検索するINの使い方でした。
コメント