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.
