SELECT フィールド名 FROM テーブル名 WHERE フィールド名 NOT IN(値1 , 値2 , ・・・・・)
「NOT」と「IN」を組み合わせると「値1 と 値2 と ・・・・ 以外の」データを返します。
例: SQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 NOT IN ( '愛知' , '東京' , '大阪' ) "
この場合、出身が 愛知 と 東京 と 大阪 以外の学生IDを抽出します。
これをANDに書き換えると
SQL = "SELECT 学生ID FROM 学生名簿 WHERE 出身 <> '愛知' AND 出身 <> '東京' AND 出身 <> '大阪' "
になります。
サンプルソフト
[実行時の画面]
「IN 抽出」ボタンをクリックすると、学生名簿テーブルから出身が、
'富山県' と '長野県'以外のレコードを表示します。
SQL = "SELECT 学生ID,出身 FROM 学生名簿 WHERE 出身 NOT IN ( '富山県' , '長野県' )
"
は
SQL = "SELECT 学生ID,出身 FROM 学生名簿 WHERE 出身<>'富山県' AND 出身<>'長野県'
"
と同じ結果になります。
サンプルソフトをダウンロードしお試しください。
[学生名簿 テーブル]
学生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 出身 NOT 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
サンプルソフトのダウンロード