sql >> Database teknologi >  >> RDS >> Mysql

Sådan bruges CASE Statement i MySQL

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!

  1. Sådan fungerer LOCATE()-funktionen i MySQL

  2. Sådan får du UTC-værdi for SYSDATE på Oracle

  3. SQL Server Login fejl:Login mislykkedes for brugeren 'NT AUTHORITY\SYSTEM'

  4. FEJL 1452:Kan ikke tilføje eller opdatere en underordnet række:en fremmednøglebegrænsning mislykkes