Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak używać instrukcji CASE w MySQL

Instrukcja MySQL Case umożliwia sprawdzenie wartości wielu warunków w zapytaniu SQL. W tym artykule przyjrzymy się, jak używać instrukcji case w MySQL.


Jak napisać opis przypadku w MySQL

Oto składnia instrukcji MySQL Case.

select 
case 
    when condition1 then value1
    when condition2 then value2
    ...
end,
column2, column3, ...
from table_name

W powyższym zapytaniu musisz podać nazwę tabeli. Musisz również wspomnieć o każdym warunku, dla którego chcesz sprawdzić daną kolumnę, w ramach instrukcji case… end. Musisz również wspomnieć o wartości, która ma być przypisana do kolumny, jeśli każdy warunek jest prawdziwy, czyli dla każdego przypadku.

Przykłady MySQL Case

Spójrzmy na kilka przykładów funkcji MySQL Case poniżej.

Załóżmy, że masz następującą tabelę sprzedaż(id, data_zamówienia, kwota) .

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 |
+------+------------+--------+

Bonus przeczytaj:Jak przeszukiwać kolumnę JSON w MySQL

Oto zapytanie SQL, które grupuje ilość wartości do 3 segmentów – mniej niż równe 100, 100-300 i więcej niż 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       |
+------+------------+------------------------+

Przeczytaj bonus:Jak uniknąć wstawiania zduplikowanych rekordów w MySQL

Zwróć uwagę, że jeśli żadna z instrukcji case nie jest spełniona dla wartości, instrukcja CASE zwróci NULL. Oto przykład

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 |
+------+------------+------------------+

W powyższym przykładzie instrukcja CASE zwraca NULL dla 100, ponieważ nie spełnia żadnego z warunków.

Instrukcja MySQL Case jest przydatna do tworzenia rozkładów częstotliwości i grupowania wartości.

Możesz również użyć warunku WHERE, aby zastosować instrukcję case do podzbioru wierszy.

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>;


Sprawa MySQL w Ubiq

Narzędzie Ubiq Reporting obsługuje wszystkie powyższe zapytania SQL i ułatwia wizualizację wyników SQL na różne sposoby. Oto zapytanie CASE SQL, o którym mowa powyżej, w Ubiq.

Potrzebujesz narzędzia do raportowania dla MySQL? Ubiq ułatwia wizualizację danych w ciągu kilku minut i monitorowanie w pulpitach nawigacyjnych w czasie rzeczywistym. Wypróbuj już dziś!

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Usuń zapytanie, aby usunąć wiersze w MySQL

  2. Wiele zapytań PDO

  3. Różnica między kluczem, kluczem podstawowym, kluczem unikalnym i indeksem w MySQL

  4. Jak zainstalować MySQL na macOS

  5. odpowiednik generate_series() w MySQL