La declaración MySQL Case le permite verificar un valor para múltiples condiciones en una consulta SQL. En este artículo, veremos cómo usar la declaración de caso en MySQL.
Cómo escribir declaraciones de casos en MySQL
Aquí está la sintaxis para la declaración MySQL Case.
select case when condition1 then value1 when condition2 then value2 ... end, column2, column3, ... from table_name
En la consulta anterior, debe especificar el nombre de la tabla. También debe mencionar cada condición para la que desea verificar una columna determinada, dentro del caso ... declaración final. También es necesario mencionar el valor que se asignará a la columna si cada condición es verdadera, es decir, para cada caso.
Ejemplos de casos MySQL
Veamos algunos ejemplos de la función MySQL Case a continuación.
Digamos que tiene la siguiente tabla ventas (id, order_date, cantidad) .
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 | +------+------------+--------+
Lectura adicional:Cómo consultar la columna JSON en MySQL
Aquí está la consulta SQL para agrupar la cantidad valores en 3 cubos:menos que igual a 100, 100-300 y más 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 | +------+------------+------------------------+
Lectura adicional:Cómo evitar la inserción de registros duplicados en MySQL
Tenga en cuenta que si ninguna de las declaraciones de caso se cumple para un valor, entonces la declaración CASE devolverá NULL. He aquí un ejemplo
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 | +------+------------+------------------+
En el ejemplo anterior, la instrucción CASE devuelve NULL para 100, ya que no cumple ninguna de las condiciones.
La instrucción MySQL Case es útil para crear distribuciones de frecuencia y agrupar valores.
También puede usar la condición WHERE para aplicar la declaración de caso en un subconjunto de filas.
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>;
Caso MySQL en Ubiq
La herramienta Ubiq Reporting admite todas las consultas SQL anteriores y facilita la visualización de los resultados SQL de diferentes maneras. Aquí está la consulta CASE SQL mencionada anteriormente, en Ubiq.

¿Necesita una herramienta de informes para MySQL? Ubiq facilita la visualización de datos en minutos y el monitoreo en paneles en tiempo real. ¡Pruébalo hoy!