【Oracle】INで複数の値を検索する(複数カラムも)

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の使い方でした。

 

コメント