Control de flujo
En MySQL, al igual que en algunos otros sistemas de gestión de bases de datos, las funciones de control de flujo dentro de una instrucción SELECT son limitadas debido a la naturaleza declarativa del lenguaje SQL. Sin embargo, hay algunas funciones y constructos que puedes utilizar para realizar operaciones condicionales o controlar la salida de datos en una consulta SELECT.
CASE Statement:
El uso del bloque CASE en MySQL te permite realizar lógica condicional dentro de una instrucción SELECT.
SELECT
columna1,
columna2,
CASE
WHEN condicion1 THEN resultado1
WHEN condicion2 THEN resultado2
ELSE resultado_predeterminado
END AS nueva_columna
FROM
tu_tabla;
IF Function:
La función IF se puede utilizar para realizar evaluaciones condicionales en una instrucción SELECT en MySQL. Su sintaxis es IF(condición, valor_si_cierto, valor_si_falso).
SELECT
columna1,
columna2,
IF(condicion, valor_si_cierto, valor_si_falso) AS nueva_columna
FROM
tu_tabla;
COALESCE Function:
La función COALESCE se utiliza para devolver el primer valor no nulo entre sus argumentos.
SELECT
columna1,
columna2,
COALESCE(columna_nula, 'Predeterminado') AS nueva_columna
FROM
tu_tabla;
NULLIF Function:
La función NULLIF compara dos expresiones y devuelve NULL si son iguales, de lo contrario, devuelve la primera expresión.
SELECT
columna1,
columna2,
NULLIF(columna1, 0) AS nueva_columna
FROM
tu_tabla;
Estas funciones proporcionan cierto grado de control de flujo dentro de una instrucción SELECT en MySQL, pero para lógica más compleja, es posible que necesites recurrir a procedimientos almacenados o a manipulación de datos en la aplicación que utiliza la base de datos.
Aquí hay un ejemplo de cómo utilizar la función CASE
en la base de datos Sakila de MySQL:
SELECT
first_name,
last_name,
CASE
WHEN rental_rate < 2 THEN 'Barato'
WHEN rental_rate >= 2 AND rental_rate < 4 THEN 'Moderado'
ELSE 'Caro'
END AS 'Precio'
FROM
customer
ORDER BY
last_name,
first_name;
En este ejemplo, se utiliza la función CASE
para asignar una etiqueta de precio a cada cliente en función de la tasa de alquiler de sus películas. Si la tasa de alquiler es inferior a 2, se etiqueta como “Barato”. Si la tasa de alquiler está entre 2 y 4, se etiqueta como “Moderado”. De lo contrario, se etiqueta como “Caro”.
https://dev.mysql.com/doc/refman/8.0/en/flow-control-functions.html