Изявлението на MySQL Case ви позволява да проверите стойност за множество условия в SQL заявка. В тази статия ще разгледаме как да използваме оператор case в MySQL.
Как да напиша изявление за случай в MySQL
Ето синтаксиса на изявлението на MySQL Case.
select
case
when condition1 then value1
when condition2 then value2
...
end,
column2, column3, ...
from table_name В горната заявка трябва да посочите името на таблицата. Също така трябва да споменете всяко условие, за което искате да проверите дадена колона, в рамките на case... end оператор. Трябва също да споменете стойността, която да се присвои на колоната, ако всяко условие е вярно, тоест за всеки случай.
Примери за MySQL казус
Нека разгледаме някои примери за функцията MySQL Case по-долу.
Да кажем, че имате следната таблица sales(id, order_date, amount) .
mysql> create table sales(id int, order_date date, amount int);
mysql> insert into sales(id, order_date, amount)
values(1, '2021-01-01', 150),
(1, '2021-01-02', 250),
(1, '2021-01-03', 100),
(1, '2021-01-04', 150),
(1, '2021-01-05', 350);
mysql> select * from sales;
+------+------------+--------+
| id | order_date | amount |
+------+------------+--------+
| 1 | 2021-01-01 | 150 |
| 1 | 2021-01-02 | 250 |
| 1 | 2021-01-03 | 100 |
| 1 | 2021-01-04 | 150 |
| 1 | 2021-01-05 | 350 |
+------+------------+--------+ Бонус за четене:Как да заявя колона JSON в MySQL
Ето SQL заявката за групиране на сумата стойности в 3 кофи – по-малко от 100, 100-300 и повече от 300.
mysql> select id, order_date,
case when amount<=100 then 'less than equal to 100'
when amount>100 and amount<300 then '101 to 300'
when amount>=300 then 'greater than 300'
end as bucket
from sales;
+------+------------+------------------------+
| id | order_date | bucket |
+------+------------+------------------------+
| 1 | 2021-01-01 | 101 to 300 |
| 1 | 2021-01-02 | 101 to 300 |
| 1 | 2021-01-03 | less than equal to 100 |
| 1 | 2021-01-04 | 101 to 300 |
| 1 | 2021-01-05 | greater than 300 |
+------+------------+------------------------+
Бонус за четене:Как да избегнем вмъкването на дублиращи се записи в MySQL
Моля, имайте предвид, че ако нито един от операторите case не е удовлетворен за стойност, тогава операторът CASE ще върне NULL. Ето един пример
mysql> select id, order_date,
case when amount<100 then 'less than 100'
when amount>100 and amount<300 then '100 to 300'
when amount>300 then 'greater than 300'
end as bucket
from sales;
+------+------------+------------------+
| id | order_date | bucket |
+------+------------+------------------+
| 1 | 2021-01-01 | 100 to 300 |
| 1 | 2021-01-02 | 100 to 300 |
| 1 | 2021-01-03 | NULL |
| 1 | 2021-01-04 | 100 to 300 |
| 1 | 2021-01-05 | greater than 300 |
+------+------------+------------------+
В горния пример, операторът CASE връща NULL за 100, тъй като не отговаря на никое от условията.
Изявлението на MySQL Case е полезно за създаване на честотни разпределения и групиране на стойности.
Можете също да използвате условие WHERE, за да приложите оператор case към подмножество от редове.
select id, order_date,
case when amount<=100 then 'less than equal to 100'
when amount>100 and amount<300 then '101 to 300'
when amount>=300 then 'greater than 300'
end as bucket
from sales
WHERE <condition>;
Случай на MySQL в Ubiq
Инструментът за отчитане на Ubiq поддържа всички горепосочени SQL заявки и улеснява визуализирането на SQL резултатите по различни начини. Ето споменатата по-горе CASE SQL заявка в Ubiq.
Нуждаете се от инструмент за отчитане за MySQL? Ubiq улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!