SQL初心者でも安心!ステップバイステップでわかるWHERE句の多重条件検索

2024-07-02

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 以外にも ORNOT などの論理演算子を使用して、複数の条件を組み合わせることができます。

部署が「営業」または「マーケティング」で、かつ役職が「マネージャー」または「主任」の社員をすべて抽出するクエリは以下のようになります。

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


    プロジェクトに最適なデータベースは?MySQLとMongoDBの使い分け

    データ構造MySQLは、関係データベースです。データは行と列で構成されるテーブルに格納されます。各行はレコードを表し、各列はレコードの属性を表します。MongoDBは、ドキュメント指向データベースです。データはJSON形式のドキュメントとして格納されます。ドキュメントはキーと値のペアの集合体であり、スキーマは厳密に定義する必要はありません。...


    MySQL データ結合をマスター!INNER JOIN、LEFT JOIN、RIGHT JOINの違いと使い分け

    MySQL には、複数のテーブルからデータを結合する様々なジョイントの種類があります。それぞれのジョイントは、異なる状況で異なる使い方がされます。 この記事では、MySQL における主要なジョイントの種類と、それぞれの使用方法について説明します。...


    【超便利!】MySQLクエリ結果をガッと変数に格納!サンプルコード付き

    SELECT INTO構文を使う最も基本的な方法は、SELECT INTO 構文を使うことです。この構文を使うと、SELECTクエリで取得した結果を、指定した変数に直接代入することができます。例:このクエリを実行すると、users テーブルの id が 123 のレコードの name と email が、それぞれ user_name と user_email という変数に格納されます。...


    MySQL/MariaDBデータベースのテーブルが壊れた!?焦らず試せる3つの復旧方法と予防策

    MariaDBやMySQLデータベースにおいて、テーブルが破損してしまうことがあります。破損の原因としては、ハードウェア障害、ソフトウェアのバグ、予期せぬシャットダウンなどが考えられます。破損したテーブルは読み取りや書き込みができなくなり、最悪の場合はデータ損失に繋がる可能性も。...


    SQL SQL SQL SQL Amazon で見る



    MySQL と PHP を使ってハヴァーサイン公式で距離を計算する方法

    このチュートリアルを始める前に、以下のものが必要です。PHP がインストールされた Web サーバMySQL データベースMySQL に接続できる PHP スクリプトまず、2つの地点の緯度と経度を保存するテーブルを作成する必要があります。以下の SQL クエリを実行して、locations テーブルを作成できます。