sql >> Database >  >> RDS >> Mysql

CASE-instructie gebruiken in MySQL

Met de MySQL Case-instructie kunt u een waarde voor meerdere voorwaarden in een SQL-query controleren. In dit artikel zullen we bekijken hoe u case-statements kunt gebruiken in MySQL.


Hoe een casusverklaring in MySQL te schrijven

Hier is de syntaxis voor de MySQL Case-instructie.

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

In de bovenstaande query moet u de tabelnaam opgeven. Ook moet u elke voorwaarde vermelden waarvoor u een bepaalde kolom wilt controleren, binnen case... end statement. U moet ook de waarde vermelden die aan de kolom moet worden toegewezen als elke voorwaarde waar is, dat wil zeggen voor elk geval.

MySQL-voorbeeldvoorbeelden

Laten we eens kijken naar enkele voorbeelden van de MySQL Case-functie hieronder.

Stel dat u de volgende tabel verkoop(id, order_date, bedrag) . heeft .

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 gelezen:Hoe JSON-kolom op te vragen in MySQL

Hier is de SQL-query om het bedrag te groeperen waarden in 3 buckets – minder dan gelijk aan 100, 100-300 en meer dan 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 gelezen:Hoe te voorkomen dat dubbele records in MySQL worden ingevoegd

Houd er rekening mee dat als aan geen van de case-statements is voldaan voor een waarde, het CASE-statement NULL retourneert. Hier is een voorbeeld

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

In het bovenstaande voorbeeld retourneert de CASE-instructie NULL voor 100, omdat deze aan geen van de voorwaarden voldoet.

MySQL Case-instructie is handig voor het maken van frequentieverdelingen en groeperingswaarden.

U kunt ook de WHERE-voorwaarde gebruiken om een ​​case-statement op een subset van rijen toe te passen.

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-hoesje in Ubiq

Ubiq Reporting-tool ondersteunt alle bovenstaande SQL-query's en maakt het gemakkelijk om SQL-resultaten op verschillende manieren te visualiseren. Hier is de hierboven genoemde CASE SQL-query, in Ubiq.

Een rapportagetool voor MySQL nodig? Ubiq maakt het gemakkelijk om gegevens binnen enkele minuten te visualiseren en in realtime dashboards te monitoren. Probeer het vandaag nog!

  1. Top PostgreSQL-beveiligingsbedreigingen

  2. Wat is Microsoft Access? Een korte introductie voor nieuwe gebruikers

  3. Is er een PL/SQL-pragma vergelijkbaar met DETERMINISTIC, maar voor het bereik van één enkele SQL SELECT?

  4. Hoe een vierkant in SQL Server te berekenen