トップDML選択(副問合せ) ≫ IN句を用いた副問合せ

IN句を用いた副問合せ

副問合せによって複数の値が返されるような場合(複数行副問合せ)はIN句を用いることで,副問合せによって返されるすべての値のうち,どれか一つと一致するレコードを抽出することができます.

IN

IN句を用いた副問合せの書き方は以下とおりです.

SELECT 列名1, 列名2, ...
FROM テーブル名
WHERE 列名 IN (
    SELECT 列名
    FROM テーブル名
    [WHERE 条件式など]
)

SQL サンプル

例として以下のテーブルから1件以上の受注実績を持つ社員を取得します.

受注

注文番号商品コード担当コード
01-101A00100001
01-102A00200001
01-103B00200004
01-104D00100005

社員

社員コード社員名
00001チャーリー
00002ルシール
00003ライナス
00004シュローダー
00005ペパーミント
00006マーシー

SQL

SELECT 社員コード, 社員名
FROM 社員
WHERE 社員コード IN (
    SELECT DISTINCT(担当コード)
    FROM 受注
)

結果

社員コード社員名
00001チャーリー
00004シュローダー
00005ペパーミント

まず副問合せによって受注テーブルの担当コード (00001, 00004, 00005) が返され,これらの担当コードのどれか一つと一致する社員コードを持つレコードを抽出します.