Microsoft Access Club >SQL入門講座 >このページ >次頁 < 前項  サイト内検索
 

条件をまとめる - IN演算子 : SQL入門講座



SQLステートメントでデータを抽出する場合、一般的にWHERE句を用います。しかし、単純な条件句であればWHERE句で対応できますが、入り込んだ条件句の場合、WHERE句 のOR演算を用いると視認性が低下します。
このような時には、WHERE句にIN演算子を用います。 他の参考書ではIN句と呼ぶ場合がありますが、全く同じ意味です。

IN演算子 構文

IN演算子とは、同じフィールド内に設定する条件をまとめる機能を持つWHERE句で用いるSQL構文です。

  • IN演算子は、OR演算子で置き換えることが可能です。
サンプルテーブル

サンプルテーブル(出張管理)を下記のように用意します。

ID 社員名 出発日 帰社日 目的地 旅費額
2 橘 修平 2004/07/04 2004/07/05 京都支店 ¥28,400
4 柴田 喜一 2004/07/17 2004/07/21 東京支店 ¥78,310
1 正道 良一 2004/07/02 2004/07/05 広島支店 ¥56,720
3 田中 邦子 2004/07/10 2004/07/15 福井支店、石川支店 ¥98,200
構文
fieldname IN 条件1,条件2, 条件3,条件4〜
引数 意味 指定
fieldname フィールド名を指定します。 省略不可。
条件n 条件句を記述します。 省略不可。
  • 配置する条件の数に制限はありません。
  • 条件を続けて記述するときは、カンマ(,)で区切ります。
  • 条件はテキスト型なら、ダブルクォーション(")、日付/時刻型ならシャープ(#)を前後に記述します。
  • これら条件に該当するフィールドデータがない場合は無視されます。
サンプル構文

出張管理」テーブルの「社員名」フィールドの値が、柴田 喜一 と 田中 邦子 のレコードを求めます。

  1. SELECT * FROM 出張管理 WHERE 社員名 IN("柴田 喜一","田中 邦子");

これをWHERE句でOR演算子を用いて書き換えると、下記のようになります。

  1. SELECT * FROM 出張管理 WHERE 社員名 = "柴田 喜一" OR 社員名 = "田中 邦子";

事例 - DAOを用いた事例

DAOを用いて以下のようにSQLを実行します。

Sub MySQLIN()

    Dim db As DAO.Database
    Dim qdf As DAO.QueryDef
    Dim mySQL As String
    
    Set db = CurrentDb()
    ' SQLを記述します。
    mySQL = "SELECT * FROM 出張管理 WHERE 社員名 IN('柴田 喜一','田中 邦子');"
        
    ' Q_出張管理を作成します。
    Set qdf = db.CreateQueryDef("Q_出張管理", mySQL)
    ' SQLを実行します。
    DoCmd.OpenQuery qdf.Name
    ' Q_出張管理を削除します。
    db.QueryDefs.Delete "Q_出張管理"
                
    db.Close: Set db = Nothing
    
End Sub
留意点
  1. VBA内でSQLを用いる場合は、前後をダブルクォーション(")で囲みます。
  2. 条件がテキスト型の場合、ダブルクォーション(")で囲むとエラーになるので、シングルクォーション(')を用います。
  3. 同名のクエリが既に存在している場合、Deleteメソッドを用いて削除します。
結果

下記のようにデータが表示されます。

集計クエリ

このSQLをクエリで作成すると、下記のようになります。

OR演算子で置き換えると、クエリ内では下記のようになります。

補足 - NOT演算子とIN演算子の組み合わせ

IN演算子にNOTを組み合わせて、否定形で利用することもできます。IN演算子の前にNOTを記述します。前段の事例を用いると、下記のようになります。

  • SELECT * FROM 出張管理 WHERE 社員名 NOT IN("柴田 喜一","田中 邦子");

2004/08/25

ページの先頭へ 前ページへ戻る

 


条件をまとめる - IN演算子 : SQL入門講座


-Microsoft Access Club-

PLESKやcPanelを思いのまま、ヨーロッパのフランス、ドイツ等の大手データセンターに配置しています。
PLESKパネルやcPanelパネルを思いのまま..
ヨーロッパ大手データセンター(ドイツ、フランス)を利用できます。
応対は全て日本語、サポートデスクを介したメールアドレスで行ないます。