Оператор MySQL CASE WHEN: подробное руководство по множеству условий

В MySQL оператор CASE WHEN — мощный инструмент для реализации условной логики в запросах. Он позволяет вам указывать несколько условий и выполнять различные блоки кода на основе оценки этих условий. В этой статье мы рассмотрим различные методы использования оператора CASE WHEN с примерами кода, иллюстрирующими их использование.

Метод 1: базовый оператор CASE WHEN
Основной синтаксис оператора CASE WHEN следующий:

SELECT column_name,
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ...
        ELSE result
    END
FROM table_name;

Пример:
Предположим, у нас есть таблица «Сотрудники» со столбцами «employee_id», «first_name» и «salary». Мы хотим классифицировать сотрудников в зависимости от диапазона их заработной платы. Вот как этого можно добиться с помощью оператора CASE WHEN:

SELECT first_name,
    CASE
        WHEN salary < 2000 THEN 'Low Salary'
        WHEN salary >= 2000 AND salary < 5000 THEN 'Medium Salary'
        ELSE 'High Salary'
    END AS salary_category
FROM employees;

Метод 2: Поиск оператора CASE WHEN
Поиск оператора CASE WHEN позволяет находить более сложные условия, оценивая каждое условие независимо. Синтаксис следующий:

SELECT column_name,
    CASE
        WHEN condition1 THEN result1
        WHEN condition2 THEN result2
        ...
        ELSE result
    END
FROM table_name;

Пример.
Давайте рассмотрим сценарий, в котором мы хотим классифицировать продукты по их ценовому диапазону. Вот как это можно сделать, используя искомый оператор CASE WHEN:

SELECT product_name,
    CASE
        WHEN price < 10 THEN 'Low Price'
        WHEN price >= 10 AND price < 100 THEN 'Medium Price'
        ELSE 'High Price'
    END AS price_category
FROM products;

Метод 3: вложенный оператор CASE WHEN
Вложенный оператор CASE WHEN позволяет нам встраивать один оператор CASE WHEN в другой. Это полезно, когда нам нужно оценить несколько уровней условий. Вот пример:

SELECT column_name,
    CASE
        WHEN condition1 THEN
            CASE
                WHEN nested_condition1 THEN nested_result1
                WHEN nested_condition2 THEN nested_result2
                ...
                ELSE nested_result
            END
        WHEN condition2 THEN result2
        ...
        ELSE result
    END
FROM table_name;

Пример:
Предположим, мы хотим классифицировать сотрудников на основе их зарплаты и отдела. Вот как этого можно добиться с помощью вложенного оператора CASE WHEN:

SELECT first_name,
    CASE
        WHEN department = 'IT' THEN
            CASE
                WHEN salary < 5000 THEN 'Low Salary (IT)'
                ELSE 'High Salary (IT)'
            END
        WHEN department = 'HR' THEN
            CASE
                WHEN salary < 3000 THEN 'Low Salary (HR)'
                ELSE 'High Salary (HR)'
            END
        ELSE 'Unknown Department'
    END AS salary_category
FROM employees;

Оператор MySQL CASE WHEN — это универсальный инструмент для реализации условной логики в запросах SQL. В этой статье мы рассмотрели три различных метода: базовый оператор CASE WHEN, оператор CASE WHEN с поиском и вложенный оператор CASE WHEN. Используя эти методы, вы можете повысить гибкость и эффективность ваших SQL-запросов.

Не забудьте адаптировать примеры кода к вашему конкретному варианту использования и структуре таблицы. Поэкспериментируйте с различными условиями и выражениями, чтобы добиться желаемых результатов.

Освоив оператор CASE WHEN, вы получите в свое распоряжение мощный инструмент для обработки сложных условий и настройки результатов запросов в MySQL.