Как добавить регистр в запрос MySQL?

Поддерживает ли MySQL материализованные представления База данных

В MySQL оператор CASE описывает способы обработки цикла для выполнения определенного набора условий и возврата регистра, сопоставленного с использованием IF-ELSE. Это управляющий оператор, который проверяет набор условий. Если какой-либо регистр найден как ИСТИНА, он возвращает значение. Если ни один регистр не подходит, возвращается значение ELSE. Также если значение ELSE не было определено, возвращается NULL.

В этом руководстве будет подробно рассмотрен оператор CASE в MySQL.

Оператор CASE в MySQL

Если у вас есть предыдущий опыт программирования на любом из популярных языков программирования, то оператор CASE определенно вам знакома. Структура следующая.

CASE
WHEN  THEN
WHEN  THEN
ELSE
END

Давайте вкратце разберем каждую из частей.

  • <condition_n>: условия, необходимые для оценки оператора CASE.
  • <result_n>: результат соответствующего совпадения регистра.
  • <else_result>: результат, когда совпадение не найдено. Если не определено, CASE возвращает NULL.

Если вы присмотритесь, то структура почти такая же, как в типичной логической структуре if-else в Java.

Использование оператора CASE

Базовое использование

Чтобы продемонстрировать применение CASE, мы собираемся использовать выделенную базу данных MySQL. Для простоты использования я буду использовать phpMyAdmin для доступа к базам данных и управления ими.

Я создал пустую базу данных hello_world.

создал пустую базу данных hello

Наша примерная база данных будет содержать информацию о студентах. Создайте новую таблицу с именем » Студенты«.

CREATE TABLE Students(ID int, Name varchar(255), State varchar(255), City varchar(255));

Наша примерная база данных будет содержать информацию о 

Теперь вставьте образец ввода в таблицу.

INSERT INTO Students (ID, Name, State, City) VALUES (‘1’, ‘Adrien’, ‘Arizona’, ‘Prescott’);
INSERT INTO Students (ID, Name, State, City) VALUES (‘2’, ‘Alisha’, ‘Nebraska’, ‘Omaha’);
INSERT INTO Students (ID, Name, State, City) VALUES (‘3’, ‘Brenda’, ‘Michigan’, ‘Detroit’);
INSERT INTO Students (ID, Name, State, City) VALUES (‘4’, ‘Thompson’, ‘New York’, »);
INSERT INTO Students (ID, Name, State, City) VALUES (‘5’, ‘David’, », ‘Portland’);

Итоговая таблица должна выглядеть так

Итоговая таблица должна выглядеть так.

Читайте также:  Внешний ключ Postgresql

Взгляните на следующий запрос и его результат.

SELECT Name, State, City FROM Students ORDER BY (
CASE
WHEN State is NULL THEN City
ELSE State
END);

Взгляните на следующий запрос и его

Использование оператора CASE с агрегатной функцией

В следующем примере мы создадим новую таблицу базы данных, содержащую информацию о продажах. На основе этой информации мы определим количество заказов по статусу заказа. Для этого мы также будем использовать функцию SUM () в MySQL. В следующем руководстве подробно рассматривается функция SUM () в MySQL.

Создайте новую таблицу Заказы.

CREATE TABLE Orders (order_ID int, sales_ID int, status varchar(255));

Давайте заполним таблицу некоторыми образцами данных.

INSERT INTO Orders (order_ID, sales_ID, status) VALUES (‘5’, ’10’, ‘processing’);
INSERT INTO Orders (order_ID, sales_ID, status) VALUES (‘8’, ‘244’, ‘success’);
INSERT INTO Orders (order_ID, sales_ID, status) VALUES (‘4’, ‘274’, ‘processing’);
INSERT INTO Orders (order_ID, sales_ID, status) VALUES (’80’, ‘452’, ‘success’);
INSERT INTO Orders (order_ID, sales_ID, status) VALUES (’10’, ‘10000’, ‘processing’);

айте заполним таблицу некоторыми образц

Следующий код будет подсчитывать экземпляры успеха и обработки.

SELECT
SUM(CASE
WHEN status = ‘success’ THEN 1
ELSE 0
END) AS ‘Success count’,
SUM(CASE
WHEN status = ‘processing’ THEN 1
ELSE 0
END) AS ‘processing’,
COUNT(*) AS ‘Sum total’
FROM Orders;

Как видно из выходных данных, они показывают сумму всех заказов в соответствии

Как видно из выходных данных, они показывают сумму всех заказов в соответствии с их статусом. Во-первых, операторы CASE выполняются и возвращают 1 каждый раз, когда он сопоставляется с соответствующим статусом заказа. Наконец, функция СУММ () вычисляет общее количество заказов.

Читайте также:  Найти размер базы данных PostgreSQL?

Заключение

В этом руководстве мы исследовали использование оператора CASE в MySQL. Короче говоря, это логический оператор, который позволяет эффективно выполнять логику IF-ELSE для запросов SQL. Мы показали, как это реализовать в различных ситуациях. По сравнению с использованием нескольких операторов IF-ELSE, CASE делает код более читаемым и эффективным.

Оцените статью
bestprogrammer.ru
Добавить комментарий