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 句には、 And や Or などの論理演算子を組み合わせて最大 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
関連項目
- 開発者フォーラムにアクセスする
- support.office.com のヘルプにアクセスする
- UtterAccess のフォーラムにアクセスする
- 開発者と VBA のプログラミング ヘルプ センター (FMS) にアクセスする
- StackOverflow のアクセス ポスト
サポートとフィードバック
Office VBA またはこの説明書に関するご質問やフィードバックがありますか? サポートの受け方およびフィードバックをお寄せいただく方法のガイダンスについては、Office VBA のサポートおよびフィードバックを参照してください。