SQL 「IN」を使い複数の指定値と一致するレコードを抽出する

複数値でレコードを抽出 : SELECT FROM WHERE IN

SELECT フィールド名 FROM テーブル名 WHERE フィールド名 IN(値1 , 値2 , ・・・・・)
「IN」は「OR」と同じ使い方ができますが、構文が分かり易くなります。
「値1 か 値2 か ・・・・ のどれかに合う」データを返します。

例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 IN ( '香川' , '島根' , '福島' ) "
この場合、出身が 香川 か 島根 か 福島 の学生IDを抽出します。
これをORに書き換えるとSQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 = '香川' OR 出身 = '島根' OR 出身 = '福島' "になります。
IN演算子を使うことで簡潔になっていることがよく分かります。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
「IN 抽出」ボタンをクリックすると、学生名簿テーブルから出身が、
'富山県' か '長野県'のレコードを表示します。

SQL = "SELECT 学生ID,出身 FROM 学生名簿 WHERE 出身 IN ( '富山県' , '長野県' ) "

SQL = "SELECT 学生ID,出身 FROM 学生名簿 WHERE 出身='富山県' OR 出身='長野県' "
と同じ結果になります。
サンプルソフトをダウンロードしお試しください。

出身県の抽出

[学生名簿 テーブル]
学生ID 体重  身長  出身
10    55.2  168.6  富山県
11    68.5  173.1  島根県
13    65.3  182.4  長野県
16    89.6  178.3  京都府
出身一覧表

[コード]
Option Compare Database

Private Sub コマンド8_Click()
    Dim SQL As String
    Dim rs As Recordset
    Me!テキスト1 = Null
    SQL = "SELECT 学生ID,出身 FROM 学生名簿 WHERE 出身 IN ( '富山県' , '長野県' ) "
    Set rs = CurrentDb.OpenRecordset(SQL)
    Do Until rs.EOF
        Me!テキスト1 = Me!テキスト1 & rs![学生ID] & ": " & rs![出身] & vbCrLf
        rs.MoveNext
    Loop
    Set rs = Nothing
End Sub

サンプルソフトのダウンロード

BackHome BackSQL Tips

Copyright(C) FeedSoft