| SQL 「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演算子を使うことで簡潔になっていることがよく分かります。
サンプルソフト [実行時の画面] 「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
ダウンロード |
||||
Copyright(C) 2007-2008 FeedSoft