これは Access SQL に関する一連の記事の 1 つです。 この記事では、WHERE 句を記述する方法について説明し、例を使用して WHERE 句を記述するときに使用できるさまざまな手法を示します。
SQL ステートメントにおいて、WHERE 句は、特定の値が格納されたレコードをクエリ結果に含めるためにフィールド値が満たす必要のある抽出条件を指定します。
Access SQL の概要については、「Access SQL: 基本的な概念、用語、および構文」の記事を参照してください。
この記事の内容
抽出条件を使用して結果を制限する
クエリに返されるレコードの数をデータを使用して制限するには、抽出条件を使用できます。 クエリ抽出条件は、フィールド参照、演算子、および定数で構成される、数式に似た文字列です。 クエリ抽出条件は式の一種です。
次の表は、抽出条件の例と、その動作について説明します。
抽出条件 |
説明 |
>25 and <50 |
"価格" や "UnitsInStock" などの "数値型" フィールドに適用されます。 この抽出条件を適用すると、"価格" や "UnitsInStock" のフィールドに 25 より大きく 50 より小さい値が含まれるレコードのみが含まれます。 |
DateDiff ("yyyy", [生年月日], Date()) > 30 |
生年月日などの "日付/時刻型" フィールドに適用されます。 クエリ結果には、ある人の誕生日と今日の日付の間の年数が 30 を超えるレコードのみが含まれます。 |
Is Null |
フィールド値が null のレコードが表示されるフィールドの種類に適用できます。 |
前の表に示すように、条件が適用されるフィールドのデータ型と特定の要件に応じて、条件が互いに大きく異なって見える場合があります。 基本的な演算子と定数を使用する単純な抽出条件もあれば、 その他は複雑で、関数と特殊な演算子を使用し、フィールド参照を含めます。
重要: あるフィールドを集計関数で使用する場合、WHERE 句でそのフィールドに対する抽出条件は指定できません。 代わりに、HAVING 句を使用して、集計されたフィールドに対して抽出条件を指定します。 詳細については、「Access SQL: 基本的な概念、用語、および構文」および「HAVING 句」を参照してください。
WHERE 句の構文
クエリ抽出条件は、SELECT ステートメントの WHERE 句で使用します。
WHERE 句の基本的な構文は次のとおりです。
WHERE field = criterion
たとえば、顧客の電話番号を知りたいのに、顧客の姓の "小川" しか思い出せないとします。 データベースのすべての電話番号を調べる代わりに、WHERE 句を使用して結果を制限すると、目的の電話番号を簡単に見つけることができます。 姓が "姓" という名前のフィールドに格納されていると仮定すると、WHERE 句は次のようになります。
WHERE [LastName]='Bagel'
注: WHERE 句で使用できる抽出条件は、等しい値に対する条件だけではありません。 より大きい (>)、より小さい (<) など、他の比較演算子も使用できます。 たとえば、WHERE [価格]>100 のように指定できます。
WHERE 句を使用してデータ ソースを組み合わせる
データは一致するものの、データ型が異なるフィールドに基づいてデータ ソースを比較する場合があります。 たとえば、あるテーブルのフィールドが数値データ型で、そのフィールドと、テキスト データ型の別のテーブルのフィールドと比較する場合があります。
データ型が異なるフィールド間には結合を作成できません。 データ型が異なるフィールドの値に基づいて 2 つのデータ ソースのデータを組み合わせるには、LIKE キーワードを使用して、一方のフィールドをもう一方のフィールドの抽出条件として使用する WHERE 句を作成します。
たとえば、field1 (table1 のテキスト フィールド) のデータが field2 (table2 の数値フィールド) のデータと一致する場合にのみ、table1 と table2 のデータを使用するとします。 WHERE 句は次のようになります。
WHERE field1 LIKE field2
抽出条件を作成して WHERE 句で使用する方法の詳細については、「クエリの抽出条件の例」を参照してください。