CASE WHEN en MySQL
En este tutorial, nuestro objetivo es comprender cómo usar la declaración CASE WHEN
en una base de datos MySQL.
Las empresas y organizaciones que manejan grandes cantidades de datos necesitan filtrar los datos en función de ciertas condiciones. Y si hay múltiples condiciones, se vuelve difícil para el programador escribir una consulta eficiente que pueda recuperar datos rápidamente.
MySQL nos ayuda a realizar esta operación con la ayuda de la sentencia CASE WHEN
.
La declaración CASE WHEN
es útil y se emplea en todos los lugares de trabajo que se ocupan del filtrado de datos en MySQL. Veamos este método en acción.
Pero antes de comenzar, creemos un conjunto de datos ficticio creando una tabla, student_details
con algunas filas.
-- create the table student_details
CREATE TABLE student_details(
stu_id int,
stu_firstName varchar(255) DEFAULT NULL,
stu_lastName varchar(255) DEFAULT NULL,
primary key(stu_id)
);
-- insert rows to the table student_details
INSERT INTO student_details(stu_id,stu_firstName,stu_lastName)
VALUES(1,"Preet","Sanghavi"),
(2,"Rich","John"),
(3,"Veron","Brow"),
(4,"Preet","Jos"),
(5,"Hash","Shah"),
(6,"Sachin","Parker"),
(7,"David","Miller");
La consulta anterior crea una tabla con filas con el nombre y apellido del estudiante. Para ver las entradas en los datos, usamos el siguiente código:
SELECT * FROM student_details;
El código anterior daría el siguiente resultado:
stu_id stu_firstName stu_lastName
1 Preet Sanghavi
2 Rich John
3 Veron Brow
4 Preet Jos
5 Hash Shah
6 Sachin Parker
7 David Miller
Como tenemos nuestra tabla configurada, filtremos estos datos usando la declaración CASE WHEN
.
CASE WHEN
en MySQL
Como se mencionó anteriormente, la instrucción CASE WHEN
nos ayuda a obtener valores que cumplen la condición especificada en su expresión.
Esta es la sintaxis básica de la sentencia CASE WHEN
:
CASE
WHEN condition_1 THEN output_1
WHEN condition_2 THEN output_2
ELSE output_3
END;
El código antes mencionado devuelve la salida_1
cuando se cumple la condition_1
, salida_2
cuando se cumple la condition_2
y salida_3
cuando no se cumplen ni la condition_1
ni la condition_2
.
Ahora, filtremos la tabla student_details
según el stu_id
. Cuando el stu_id
es menor o igual a tres, se desea imprimir student with smaller id
, y cuando el stu_id
es mayor a tres, se imprime student with greater id
.
Podemos realizar esta operación con el siguiente código.
SELECT stu_id, stu_firstName,
CASE
WHEN stu_id > 3 THEN 'student with greater id'
ELSE 'student with smaller id'
END as case_result
FROM student_details;
El resultado de la consulta antes mencionada es el siguiente.
stu_id stu_firstName case_result
1 Preet student with smaller id
2 Rich student with smaller id
3 Veron student with smaller id
4 Preet student with greater id
5 Hash student with greater id
6 Sachin student with greater id
7 David student with greater id
Como podemos ver en el bloque de código antes mencionado, los estudiantes con stu_id
mayor que tres obtienen student with greater id
como resultado del caso. De lo contrario, obtenemos student with smaller id
como resultado del caso.
case_result
para una mejor legibilidad con la palabra clave AS
en MySQL.Por lo tanto, con la ayuda de la declaración CASE WHEN
, podemos pasar de manera eficiente por diferentes condiciones y encontrar datos coincidentes de una tabla en MySQL.