MySQL Case-sætning giver dig mulighed for at kontrollere en værdi for flere betingelser i en SQL-forespørgsel. I denne artikel vil vi se på, hvordan man bruger case statement i MySQL.
Sådan skriver man en sagserklæring i MySQL
Her er syntaksen for MySQL Case-sætning.
select case when condition1 then value1 when condition2 then value2 ... end, column2, column3, ... from table_name
I ovenstående forespørgsel skal du angive tabelnavnet. Du skal også nævne hver betingelse, som du vil kontrollere en given kolonne for, inden for case... end statement. Du skal også nævne den værdi, der skal tildeles til kolonnen, hvis hver betingelse er sand, det vil sige for hvert enkelt tilfælde.
Eksempler på MySQL-case
Lad os se på nogle eksempler på MySQL Case-funktion nedenfor.
Lad os sige, at du har følgende tabel salg(id, ordre_dato, beløb) .
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 læst:Sådan forespørges JSON-kolonnen i MySQL
Her er SQL-forespørgslen til at gruppere beløbet værdier i 3 spande – mindre end lig med 100, 100-300 og mere end 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 | +------+------------+------------------------+
Bonus læst:Sådan undgår du at indsætte duplikerede poster i MySQL
Bemærk venligst, at hvis ingen af case-sætningerne er opfyldt for en værdi, vil CASE-sætningen returnere NULL. Her er et eksempel
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 | +------+------------+------------------+
I ovenstående eksempel returnerer CASE-sætningen NULL for 100, da den ikke opfylder nogen af betingelserne.
MySQL-sagserklæring er nyttig til at oprette frekvensfordelinger og gruppere værdier.
Du kan også bruge WHERE-betingelsen til at anvende sagsudsagn på et undersæt af rækker.
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 Case i Ubiq
Ubiq Reporting-værktøj understøtter alle ovenstående SQL-forespørgsler og gør det nemt at visualisere SQL-resultater på forskellige måder. Her er CASE SQL-forespørgslen nævnt ovenfor, i Ubiq.
Har du brug for et rapporteringsværktøj til MySQL? Ubiq gør det nemt at visualisere data på få minutter og overvåge i dashboards i realtid. Prøv det i dag!