SQL 「NOT」を使い条件以外のレコードを抽出する

NOTは条件式の論理否定

SELECT フィールド名 FROM テーブル名 WHERE NOT 条件式
「NOT」は条件式の論理否定です。
「条件式 以外の」、「条件式 ではない」と言われます。
条件式が「True (真)」の時は「False (偽)」のデータを返し、「False (偽)」の時は「True (真)」のデータを返します。

例1: SQL = "SELECT 学生ID FROM 学生名簿 WHERE NOT 体重<=80 "
この場合、体重が80を超える学生IDを抽出します。

例2: SQL = "SELECT 学生ID FROM 学生名簿 WHERE NOT 名前 LIKE '田' "
この場合、名前に「田」の文字が含まれない学生IDを抽出します。



BackHome BackSQL Tips

サンプルソフト
[実行時の画面]
身長を入力し「NOT 抽出」ボタンをクリックすると、学生名簿テーブルから、
入力された身長以下でないレコードを表示します。

SQL = "SELECT 学生ID,身長 FROM 学生名簿 WHERE NOT 身長<=" & Me!テキスト2

SQL = "SELECT 学生ID,身長 FROM 学生名簿 WHERE 身長>" & Me!テキスト2
と同じ結果になります。
身長で抽出

[学生名簿 テーブル]
学生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
    If IsNull(Me!テキスト2) Then
        MsgBox "抽出する身長を入力してください。"
        Me!テキスト2.SetFocus
        Exit Sub
    End If
    Me!テキスト1 = Null
    SQL = "SELECT 学生ID,身長 FROM 学生名簿 WHERE NOT 身長<=" & Me!テキスト2
    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