WHERE 句 (Microsoft Access SQL)

適用先: Access 2013 | Access 2016

FROM 句で記述されたテーブル内で、SELECT ステートメント、UPDATE ステートメント、または DELETE ステートメントの対象となるレコードを指定します。

構文

SELECT フィールドリスト FROM tableexpression WHERE criteria

WHERE 句を使用する SELECT ステートメントには、次の指定項目があります。

パーツ 説明
fieldlist 取得する 1 つ以上のフィールドの名前。フィールド名の別名や選択述語 (ALL、DISTINCT、DISTINCTROW、TOP) などの SELECT ステートメント オプションも指定できます。
tableexpression データを取得する 1 つ以上のテーブルの名前。
criteria クエリの結果に含むレコードの抽出条件式。

注釈

Access データベース エンジンは、WHERE 句に記載されている条件を満たすレコードを選択します。 WHERE 句を指定しない場合、クエリはテーブルからすべての行を返します。 WHERE 句や JOIN 句を使用しないクエリで複数のテーブルが指定されていると、クエリはそれらのテーブルの直積を返します。

WHERE は省略可能ですが、含まれている場合は FROM に従います。 たとえば、営業部門のすべての従業員 (WHERE Dept = 'Sales') または 18 歳から 30 歳までのすべての顧客 () または 18 歳から 30 歳までのすべての顧客 (WHERE Age Between 18 And 30) を選択できます。

JOIN 句を使用して複数のテーブルに対して SQL 結合操作を実行しない場合、結果の Recordset オブジェクトは更新できません。

WHERE は HAVING に似ています。 WHERE は、選択されるレコードを決定します。 同様に、 レコードが GROUP BY でグループ化されると、HAVING によって表示されるレコードが決まります。

WHERE 句を使用して、GROUP BY 句でグループ化したくないレコードを削除します。

SQL ステートメントが返すレコードは、さまざまな式を使用することで決まります。 たとえば、次の SQL ステートメントは給与が 210,000 円を超える社員をすべて選択します。

SELECT LastName, Salary 
FROM Employees 
WHERE Salary > 21000;

WHERE 句には、 AndOr などの論理演算子を組み合わせて最大 40 個までの式を指定できます。

スペースまたは句読点を含むフィールド名を入力する場合は、名前を角かっこ ([ ]) で囲みます。 たとえば、顧客情報テーブルには、特定の顧客に関する情報が含まれる場合があります。

SELECT [Customer's Favorite Restaurant]

criteria 引数を指定する場合、Microsoft Jet データベース エンジンの米国バージョンを使用していない場合でも、日付リテラルは米国形式である必要があります。 たとえば、1996 年 5 月 10 日を指定する場合は、「5/10/96」のように米国形式で表します。 日付は、必ず次の例のように番号記号 (#) で囲んでください。

たとえば、1996 年 5 月 10 日付けのレコードを検索する場合は、次のような SQL ステートメントを使用します。

SELECT * 
FROM Orders 
WHERE ShippedDate = #5/10/96#;

DateValue 関数を使用すると、Microsoft Windows® のコントロール パネルの [地域のオプションのカスタマイズ] ダイアログ ボックスで設定されている形式で日付を指定できます。 たとえば、[英語 (U.S.)] 形式を使用する場合は、次のコードを使用します。

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('5/10/96');

日本語の形式を使用する場合は、次のコードを使用します。

SELECT * 
FROM Orders 
WHERE ShippedDate = DateValue('10/5/96');

注:

抽出条件文字列で参照される列の型が GUID 型 (GUID) の場合は、抽出条件式で使用する構文が次のように多少異なります。

WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}

上の例のように、必ずネストした中かっこ ({}) とハイフン (-) を含めるようにしてください。

次に示す使用例では、Employees テーブルに Salary フィールドが含まれていると仮定しています。 実際には、ノースウィンド データベースの Employees テーブルにこのフィールドは含まれていないので注意してください。

次の使用例では、姓が King である各レコードの LastName フィールドおよび FirstName フィールドを選択します。 EnumFields プロシージャを呼び出しますが、このプロシージャについては、SELECT ステートメントの使用例を参照してください。

Sub WhereX() 
 
    Dim dbs As Database, rst As Recordset 
 
    ' Modify this line to include the path to Northwind 
    ' on your computer. 
    Set dbs = OpenDatabase("Northwind.mdb") 
 
    ' Select records from the Employees table where the 
    ' last name is King. 
    Set rst = dbs.OpenRecordset("SELECT LastName, " _ 
        & "FirstName FROM Employees " _ 
        & "WHERE LastName = 'King';") 
     
    ' Populate the Recordset. 
    rst.MoveLast 
     
    ' Call EnumFields to print the contents of the 
    ' Recordset. 
    EnumFields rst, 12 
 
    dbs.Close 
 
End Sub 

関連項目

サポートとフィードバック

Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。