Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment utiliser l'instruction CASE dans MySQL

L'instruction MySQL Case vous permet de vérifier une valeur pour plusieurs conditions dans une requête SQL. Dans cet article, nous verrons comment utiliser l'instruction case dans MySQL.


Comment écrire une déclaration de cas dans MySQL

Voici la syntaxe de l'instruction MySQL Case.

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

Dans la requête ci-dessus, vous devez spécifier le nom de la table. Vous devez également mentionner chaque condition pour laquelle vous souhaitez vérifier une colonne donnée, dans le cas… déclaration de fin. Vous devez également mentionner la valeur à attribuer à la colonne si chaque condition est vraie, c'est-à-dire pour chaque cas.

Exemples de cas MySQL

Regardons quelques exemples de la fonction MySQL Case ci-dessous.

Disons que vous avez le tableau suivant ventes(id, date_commande, montant) .

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

Lecture bonus :Comment interroger la colonne JSON dans MySQL

Voici la requête SQL pour regrouper le montant valeurs en 3 tranches :moins que 100, 100-300 et plus de 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       |
+------+------------+------------------------+

Lecture bonus :Comment éviter d'insérer des enregistrements en double dans MySQL

Veuillez noter que si aucune des instructions case n'est satisfaite pour une valeur, l'instruction CASE renverra NULL. Voici un exemple

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

Dans l'exemple ci-dessus, l'instruction CASE renvoie NULL pour 100, car elle ne satisfait à aucune des conditions.

L'instruction MySQL Case est utile pour créer des distributions de fréquence et des valeurs de regroupement.

Vous pouvez également utiliser la condition WHERE pour appliquer l'instruction case sur un sous-ensemble de lignes.

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


Cas MySQL dans Ubiq

L'outil Ubiq Reporting prend en charge toutes les requêtes SQL ci-dessus et facilite la visualisation des résultats SQL de différentes manières. Voici la requête CASE SQL mentionnée ci-dessus, dans Ubiq.

Besoin d'un outil de reporting pour MySQL ? Ubiq permet de visualiser facilement les données en quelques minutes et de les surveiller dans des tableaux de bord en temps réel. Essayez-le aujourd'hui !