SQL初心者でも安心!ステップバイステップでわかるWHERE句の多重条件検索
MySQLにおける複数 WHERE ステートメントを使用したSQLクエリ
構文
SELECT column_name(s)
FROM table_name
WHERE condition1
[AND condition2]
[AND conditionN];
説明
SELECT
句:抽出したい列を指定します。FROM
句:検索対象のテーブルを指定します。WHERE
句:レコードを絞り込む条件を指定します。AND
キーワード:複数の条件を組み合わせるために使用します。
例
社員テーブル (employees) において、部署が「営業」で、かつ入社年が2020年以降の社員をすべて抽出するクエリは以下のようになります。
SELECT employee_name, department, start_date
FROM employees
WHERE department = '営業'
AND start_date >= '2020-01-01';
このクエリは、以下の結果を返します。
従業員名 | 部署 | 入社日 |
---|---|---|
山田太郎 | 営業 | 2020-04-01 |
佐藤花子 | 営業 | 2021-02-15 |
高橋一郎 | 営業 | 2022-07-10 |
複数の条件を組み合わせる
WHERE
句では、AND
以外にも OR
や NOT
などの論理演算子を使用して、複数の条件を組み合わせることができます。
部署が「営業」または「マーケティング」で、かつ役職が「マネージャー」または「主任」の社員をすべて抽出するクエリは以下のようになります。
SELECT employee_name, department, title
FROM employees
WHERE (department = '営業' OR department = 'マーケティング')
AND (title = 'マネージャー' OR title = '主任');
従業員名 | 部署 | 役職 |
---|---|---|
山田太郎 | 営業 | マネージャー |
佐藤花子 | マーケティング | 主任 |
高橋一郎 | 営業 | マネージャー |
鈴木次郎 | マーケティング | マネージャー |
注意点
- 複数の
WHERE
ステートメントを使用する場合は、条件が複雑になりやすいため、クエリをわかりやすく記述することが重要です。 - 複数の条件を組み合わせる場合は、論理演算子の使い方に注意する必要があります。
例1:社員テーブルから特定の部署と役職を持つ社員を抽出する
この例では、employees
テーブルから部署が「営業」または「マーケティング」で、かつ役職が「マネージャー」または「主任」の社員を抽出します。
SELECT employee_name, department, title
FROM employees
WHERE (department = '営業' OR department = 'マーケティング')
AND (title = 'マネージャー' OR title = '主任');
例2:顧客テーブルから特定の地域と購入金額以上の顧客を抽出する
この例では、customers
テーブルから地域が「関東」または「関西」で、かつ購入金額が1万円以上の顧客を抽出します。
SELECT customer_name, region, purchase_amount
FROM customers
WHERE (region = '関東' OR region = '関西')
AND purchase_amount >= 10000;
例3:商品テーブルから特定のカテゴリーと価格帯の商品を抽出する
この例では、products
テーブルからカテゴリーが「衣類」または「雑貨」で、かつ価格が1,000円以上3,000円以下の商品を抽出します。
SELECT product_name, category, price
FROM products
WHERE (category = '衣類' OR category = '雑貨')
AND (price >= 1000 AND price <= 3000);
これらの例はほんの一例であり、WHERE
句で複数の条件を組み合わせる方法は様々です。状況に合わせて適切なクエリを作成してください。
補足
- 上記の例では、
AND
演算子を使用して条件を組み合わせていますが、OR
演算子やNOT
演算子を使用することもできます。 - 複数の条件を組み合わせる場合、カッコを使用して条件式をグループ化することで、クエリの見やすさを向上させることができます。
WHERE
句以外にも、SELECT
句やFROM
句で条件を指定することもできます。
MySQLにおける複数 WHERE ステートメントを使用したSQLクエリの実行方法
方法1:サブクエリを使用する
サブクエリを使用すると、複雑な条件をよりわかりやすく記述することができます。
SELECT employee_id
FROM employees
WHERE employee_id IN (
SELECT employee_id
FROM employees
WHERE (department = '営業' OR department = 'マーケティング')
AND (title = 'マネージャー' OR title = '主任')
);
このクエリは、まずサブクエリで条件に一致する社員のIDを取得し、それをメインクエリで抽出します。
方法2:JOIN 句を使用する
JOIN
句を使用すると、複数のテーブルからデータを結合して検索することができます。
社員テーブル (employees) と部署テーブル (departments) を結合し、部署が「営業」または「マーケティング」で、かつ役職が「マネージャー」または「主任」の社員の氏名、部署名、役職名を取得するクエリは以下のようになります。
SELECT e.employee_name, d.department_name, e.title
FROM employees AS e
JOIN departments AS d ON e.department_id = d.department_id
WHERE (d.department_name = '営業' OR d.department_name = 'マーケティング')
AND (e.title = 'マネージャー' OR e.title = '主任');
このクエリは、JOIN
句を使用して employees
テーブルと departments
テーブルを結合し、条件に一致するレコードのみを抽出します。
- サブクエリは、複雑な条件をわかりやすく記述したい場合に適しています。
- 上記以外にも、MySQLで複数の
WHERE
ステートメントを使用したSQLクエリを実行する方法があります。 - 状況に合わせて適切な方法を選択してください。
mysql