データベース - SQL 基本構文 - 複数の条件をまとめて IN

クラウディア 
1. 概要
2. IN
3. IN で複数列を指定する

1. 概要

 「A は B または A は C または A は D」と書くのは、面倒。  「A は (B, C, D) のどれか」と書く方が見やすい。  そのために、「IN」があります。  本ページは、下記のサイトを参考にさせていただきました。
SQL の IN 句とは?複数の条件指定をまとめて行うための IN 句の使い方

2. IN

 「SELECT」するときの基本形は。

SELECT
    *
FROM
	table1
WHERE
	条件式
;
 で。  最も単純な条件式は。

カラム = 値
 になります。  1つのカラムで複数の値を条件設定する場合。

    C = V1
OR	C = V2
 これが多くなると大変ですし、プログラムで SQL を組む場合は、編集が難しくなります。  これを少し簡単にするのが「IN」で。

C IN (V1, V2, V3, ・・・)
 と書くことができます。  注意することとして。  列挙する数には上限があって、「Oracle」では確か、「3000」まででした。  「SELECT」の結果として得るものであれば、数の上限がなかったのじゃなかったかしら?  そもそも、「IN」の中にいれるものが、あるテーブルから絞り込まれるものであれば。

C IN (SELECT 結果 FROM テーブル WHERE 条件)
 と書くのがよいのです。

3. IN で複数列を指定する

 「postgreSQL」では、「IN」で複数列を指定することができ、下記にように使えます。

SELECT
    *
FROM
	テーブル
WHERE
	(C1, C2) IN ((V11, V21), (V21,  V22), ・・・)
;
 「Oracle」でもできるらしいですが、未確認です。  他のテーブルとの結合にも使えて。

SELECT
	*
FROM
    テーブル1
WHERE
	(T1C1, T1C2) IN (SELECT T2C1, T2C2 FROM テーブル2 WHERE 条件式)
;
 と書くことができます。  「DB2」では、値を直接書く方法はエラーになりましたが、他のテーブルとの結合はうまくいきました。
ハイスピードプラン5G CONNECT