Mysql
 sql >> база данни >  >> RDS >> Mysql

Как да използвам изявление CASE в MySQL

Изявлението на 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 улеснява визуализирането на данни за минути и наблюдение в табла за управление в реално време. Опитайте го днес!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да активирате SSL/TLS за MySQL в Ubuntu

  2. Как мога да направя три присъединявания към таблицата в заявка UPDATE?

  3. Как да актуализирам, ако съществува, да вмъкна, ако не (AKA upsert или merge) в MySQL?

  4. Инсталиране на уеб сървър във FreeBSD 6.0 с Apache 2.2, MySQL 5.0 и PHP 5 – част 3

  5. Целочисленото поле на MySQL се връща като низ в PHP