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ś!