MySQL Case-sats låter dig kontrollera ett värde för flera villkor i en SQL-fråga. I den här artikeln kommer vi att titta på hur man använder fallbeskrivning i MySQL.
Hur man skriver ärendeutlåtande i MySQL
Här är syntaxen för MySQL Case-sats.
select case when condition1 then value1 when condition2 then value2 ... end, column2, column3, ... from table_name
I ovanstående fråga måste du ange tabellnamnet. Du måste också nämna varje villkor som du vill kontrollera en given kolumn för, inom case … slutsats. Du måste också nämna värdet som ska tilldelas kolumnen om varje villkor är sant, det vill säga för varje fall.
Exempel på MySQL-fall
Låt oss titta på några exempel på MySQL Case-funktion nedan.
Låt oss säga att du har följande tabell försäljning(id, order_date, summa) .
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 | +------+------------+--------+
Bonusläsning:Hur man frågar JSON-kolumnen i MySQL
Här är SQL-frågan för att gruppera beloppet värden i 3 hinkar – mindre än lika med 100, 100-300 och mer än 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äsning:Hur man undviker att infoga dubbletter av poster i MySQL
Observera att om inget av fallsatserna är uppfyllda för ett värde, kommer CASE-satsen att returnera NULL. Här är ett exempel
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 exemplet ovan returnerar CASE-satsen NULL för 100, eftersom den inte uppfyller något av villkoren.
MySQL Case statement är användbart för att skapa frekvensfördelningar och gruppera värden.
Du kan också använda WHERE-villkoret för att tillämpa case-satsen på en delmängd av rader.
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-fodral i Ubiq
Ubiqs rapporteringsverktyg stöder alla ovanstående SQL-frågor och gör det enkelt att visualisera SQL-resultat på olika sätt. Här är CASE SQL-frågan som nämns ovan, i Ubiq.
Behöver du ett rapporteringsverktyg för MySQL? Ubiq gör det enkelt att visualisera data på några minuter och övervaka i realtidsinstrumentpaneler. Prova det idag!