FROM 句で記述されたテーブル内で、SELECT ステートメント、UPDATE ステートメント、または DELETE ステートメントの対象となるレコードを指定します。
SELECT fieldlist
FROM tableexpression
WHERE criteria
WHERE 句を使用する SELECT ステートメントには、次の指定項目があります。
指定項目 | 内容 |
---|---|
fieldlist | 取得する 1 つ以上のフィールドの名前。フィールド名の別名や選択述語 (ALL、DISTINCT、DISTINCTROW、TOP) などの SELECT ステートメント オプションも指定できます。 |
tableexpression | データを取得する 1 つ以上のテーブルの名前。 |
criteria | クエリでレコードを抽出する場合に使用する条件式。 |
Microsoft Jet データベース エンジンは、WHERE 句で指定した条件を満たすレコードを選択します。WHERE 句で指定しない場合、クエリはテーブル内のすべての行を返します。WHERE 句や JOIN 句を使用しないクエリで複数のテーブルを指定した場合には、クエリはそれらのテーブルのデカルト積を返します。
WHERE 句は省略可能です。WHERE 句を指定する場合は FROM 句に続けて記述します。たとえば、販売部門のすべての社員を選択したり (WHERE
部門 = '
販売'
)、年齢が 18 〜 30 歳のすべての顧客を選択したり (WHERE
年齢 Between 18 And 30
) できます。
JOIN 句を使用せずに複数のテーブルで SQL 結合をする場合、返される Recordset オブジェクトは更新できなくなります。
WHERE 句は、HAVING 句と似ていますが、次のような違いがあります。WHERE 句は選択するレコードを決めるために使用しますが、HAVING 句は、GROUP BY 句でグループ化したレコードの中でどのレコードを表示するのかを決めるために使用します。
WHERE 句は、GROUP BY 句でグループ化しないレコードを除く場合に使用します。
SQL ステートメントが返すレコードは、さまざまな式を使用することで決まります。たとえば、次の SQL ステートメントでは給与が 210,000 円を超える社員をすべて選択します。
SELECT
氏名,
給与
FROM
社員
WHERE
給与 > 210000;
WHERE 句には、And や Or などの論理演算子を組み合わせて最大 40 個までの式を指定できます。
スペースや区切り記号を含むフィールド名を入力する場合は、次のようにフィールド名を角かっこ ([ ]) で囲みます。
SELECT
氏名,[
ふりがな (
氏名)]
引数 criteria に日付リテラルを指定する場合は、日本語版の Microsoft® Jet データベース エンジンであっても米国形式で指定する必要があります。たとえば、1996 年 5月 10日を指定する場合は、5/10/96 のように米国形式で表します。日付は、必ず次の例のように数値記号 (#) で囲んでください。
たとえば、1996 年 5月 10日付けのレコードを米国語のデータベースの中で検索する場合は、次のような SQL ステートメントを使用します。
SELECT *
FROM
注文
WHERE
出荷日 = #5/10/96#;
DateValue 関数を使用すると、Microsoft Windows® のコントロール パネルの [地域] ダイアログ ボックスで設定されている形式で日付を指定できます。例を次に示します。米国形式に設定してある場合
SELECT *
FROM
注文
WHERE
出荷日 = DateValue('5/10/96');
日本形式に設定してある場合
SELECT *
FROM
注文
WHERE
出荷日 = DateValue('10/5/96');
メモ 抽出条件文字列で参照される列の型が GUID 型 (GUID) の場合は、抽出条件式で使用する構文が次のように多少異なります。
WHERE ReplicaID = {GUID {12345678-90AB-CDEF-1234-567890ABCDEF}}
上の例のように、必ずネストした中かっこ ({}) とハイフン (-) を含めるようにしてください。