La sentencia IF ELSE MySQL con ejemplos prácticos

n este artículo, voy a mostrar cómo utilizar la sentencia IF ELSE MySQL con ejemplos para mejorar vuestras consultas y obtener resultados más precisos. Con estos 18 ejemplos prácticos, aprenderemos a manejar esta poderosa herramienta y a sacarle el máximo partido a la base de datos. Exploraremos casos reales donde el uso de IF ELSE marca la diferencia, desde la selección condicional de datos hasta la ejecución de operaciones complejas. ¿Estás listos? ¡Pues vamos allá! Prepárate para dominar esta técnica y llevar tus habilidades de SQL al siguiente nivel.

¿Qué es la sentencia IF ELSE en MySQL?

Antes de meternos de lleno en los ejemplos, es importante entender qué es la sentencia IF ELSE en MySQL. Básicamente, se trata de una estructura condicional que nos permite ejecutar diferentes acciones en función de si se cumple o no una determinada condición. Es decir, si la condición es verdadera, se ejecutará un bloque de código, y si es falsa, se ejecutará otro bloque de código diferente.

Sentencia IF ELSE MySQL con ejemplos

Aquí listamos una tabla con los 18 ejemplos que vamos a ver en este artículo:

EjemploDescripción
1Uso básico de IF ELSE
2IF ELSE con múltiples condiciones
3IF ELSE anidados
4IF ELSE con operadores lógicos
5IF ELSE con funciones de agregación
6IF ELSE con subconsultas
7IF ELSE con variables
8IF ELSE con CASE
9IF ELSE con IFNULL
10IF ELSE con NULLIF
11IF ELSE con EXISTS
12IF ELSE con IN
13IF ELSE con BETWEEN
14IF ELSE con LIKE
15IF ELSE con REGEXP
16IF ELSE con DATE_FORMAT
17IF ELSE con GROUP_CONCAT
18IF ELSE con HAVING

1. Uso básico de IF ELSE

Veamos un ejemplo sencillo para empezar. Supongamos que tenemos una tabla llamada «productos» con los siguientes campos: id, nombre, precio y stock. Queremos obtener el nombre del producto y un mensaje que indique si hay stock o no. Podemos hacerlo así:

SELECT nombre, IF(stock > 0, 'Hay stock', 'No hay stock') AS stock 
FROM productos;

En este caso, la condición es stock > 0. Si se cumple, se mostrará el mensaje ‘Hay stock’, y si no se cumple, se mostrará ‘No hay stock’.

2. IF ELSE con múltiples condiciones

También podemos utilizar IF ELSE con múltiples condiciones. Por ejemplo, supongamos que queremos obtener el nombre del producto y un mensaje que indique si el precio es mayor que 100, menor que 50 o está entre 50 y 100. Podemos hacerlo así:

SELECT nombre, 
  IF(precio > 100, 'Caro', 
    IF(precio < 50, 'Barato', 'Precio medio')
  ) AS precio
FROM productos;

En este caso, utilizamos IF ELSE anidados para evaluar las diferentes condiciones.

3. IF ELSE anidados

Como hemos visto en el ejemplo anterior, podemos anidar múltiples sentencias IF ELSE para evaluar diferentes condiciones. Veamos otro ejemplo. Supongamos que queremos obtener el nombre del producto y un mensaje que indique si el stock es mayor que 100, menor que 10 o está entre 10 y 100. Además, si el stock es menor que 10, queremos indicar si es 0 o no. Podemos hacerlo así:

SELECT nombre,
  IF(stock > 100, 'Stock alto',
    IF(stock < 10, 
      IF(stock = 0, 'Sin stock', 'Stock bajo'),
      'Stock medio'
    )
  ) AS stock
FROM productos;

En este caso, utilizamos tres niveles de anidamiento para evaluar todas las condiciones necesarias.

4. IF ELSE con operadores lógicos

También podemos combinar IF ELSE con operadores lógicos como AND y OR. Por ejemplo, supongamos que queremos obtener el nombre del producto y un mensaje que indique si el precio es mayor que 100 y el stock es menor que 10. Podemos hacerlo así:

SELECT nombre,
  IF(precio > 100 AND stock < 10, 'Urgente reponer', 'OK') AS estado
FROM productos;

En este caso, la condición es precio > 100 AND stock < 10. Si se cumplen ambas condiciones, se mostrará el mensaje ‘Urgente reponer’, y si no se cumplen, se mostrará ‘OK’.

5. IF ELSE con funciones de agregación

Podemos combinar IF ELSE con funciones de agregación como SUM, AVG, MAX, etc. Por ejemplo, supongamos que queremos obtener el total de ventas y un mensaje que indique si hemos superado el objetivo de 10000 o no. Podemos hacerlo así:

SELECT 
  SUM(total) AS total_ventas,
  IF(SUM(total) > 10000, '¡Objetivo superado!', 'No se alcanzó el objetivo') AS mensaje
FROM ventas;

En este caso, calculamos el total de ventas con SUM y luego utilizamos IF ELSE para mostrar un mensaje en función de si se ha superado el objetivo o no.

6. IF ELSE con subconsultas

También podemos utilizar IF ELSE con subconsultas. Por ejemplo, supongamos que queremos obtener el nombre de los productos y un mensaje que indique si su precio es mayor que el precio medio de todos los productos. Podemos hacerlo así:

SELECT nombre,
  IF(precio > (SELECT AVG(precio) FROM productos), 
    'Precio superior a la media', 
    'Precio inferior o igual a la media'
  ) AS comparacion
FROM productos;

En este caso, utilizamos una subconsulta para calcular el precio medio de todos los productos y luego comparamos cada precio individual con ese valor utilizando IF ELSE.

7. IF ELSE con variables

Podemos utilizar IF ELSE junto con variables para almacenar y utilizar valores en nuestras consultas. Por ejemplo, supongamos que queremos obtener el total de ventas y un mensaje que indique si hemos superado un objetivo que tenemos almacenado en una variable. Podemos hacerlo así:

SET @objetivo = 10000;

SELECT 
  SUM(total) AS total_ventas,
  IF(SUM(total) > @objetivo, '¡Objetivo superado!', 'No se alcanzó el objetivo') AS mensaje 
FROM ventas;

En este caso, primero definimos una variable @objetivo con el valor 10000 y luego la utilizamos en la condición del IF ELSE.

8. IF ELSE con CASE

Otra forma de utilizar IF ELSE es combinándolo con la sentencia CASE. Por ejemplo, supongamos que queremos obtener el nombre del producto y una clasificación de su precio en ‘Barato’, ‘Medio’ o ‘Caro’ en función de ciertos rangos. Podemos hacerlo así:

SELECT nombre,
  CASE 
    WHEN precio < 50 THEN 'Barato'
    WHEN precio BETWEEN 50 AND 100 THEN 'Medio'
    ELSE 'Caro'
  END AS clasificacion
FROM productos;

En este caso, utilizamos CASE para evaluar diferentes condiciones y asignar un valor en función del resultado. Es una forma alternativa de hacer lo mismo que con IF ELSE anidados.

9. IF ELSE con IFNULL

La función IFNULL nos permite manejar valores nulos en nuestras consultas. Podemos combinarla con IF ELSE para asignar un valor por defecto cuando encontramos un valor nulo. Por ejemplo, supongamos que queremos obtener el nombre del producto y su precio, pero si el precio es nulo, queremos mostrar el mensaje ‘Consultar’. Podemos hacerlo así:

SELECT nombre, IFNULL(precio, 'Consultar') AS precio
FROM productos;

En este caso, utilizamos IFNULL para evaluar si el precio es nulo y, en caso afirmativo, mostrar el mensaje ‘Consultar’ en lugar del valor nulo.

10. IF ELSE con NULLIF

La función NULLIF es similar a IFNULL, pero en lugar de manejar valores nulos, nos permite comparar dos valores y devolver NULL si son iguales. Podemos combinarla con IF ELSE para asignar un valor alternativo cuando se cumple cierta condición. Por ejemplo, supongamos que queremos obtener el nombre del producto y su precio, pero si el precio es 0, queremos mostrar el mensaje ‘Gratis’. Podemos hacerlo así:

SELECT nombre, IF(NULLIF(precio, 0) IS NULL, 'Gratis', precio) AS precio
FROM productos;

En este caso, utilizamos NULLIF para comparar el precio con 0 y devolver NULL si son iguales. Luego, utilizamos IF ELSE para evaluar si el resultado de NULLIF es NULL y, en caso afirmativo, mostrar el mensaje ‘Gratis’ en lugar del precio.

11. IF ELSE con EXISTS

La cláusula EXISTS nos permite verificar si existe algún registro que cumpla cierta condición en una subconsulta. Podemos combinarla con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener el nombre de los clientes y un mensaje que indique si han realizado algún pedido o no. Podemos hacerlo así:

SELECT nombre,
  IF(EXISTS(SELECT * FROM pedidos WHERE cliente_id = clientes.id),
    'Con pedidos',
    'Sin pedidos'
  ) AS estado
FROM clientes;

En este caso, utilizamos EXISTS con una subconsulta para verificar si existe algún pedido para cada cliente. Luego, utilizamos IF ELSE para mostrar un mensaje en función del resultado.

12. IF ELSE con IN

El operador IN nos permite verificar si un valor se encuentra en una lista de valores. Podemos combinarlo con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener el nombre de los productos y un mensaje que indique si pertenecen a la categoría ‘Electrónica’ o ‘Hogar’. Podemos hacerlo así:

SELECT nombre,
  IF(categoria IN ('Electrónica', 'Hogar'),
    'Producto destacado',
    'Producto regular'
  ) AS tipo
FROM productos;

En este caso, utilizamos IN para verificar si la categoría del producto se encuentra en la lista ‘Electrónica’ o ‘Hogar’. Luego, utilizamos IF ELSE para mostrar un mensaje en función del resultado.

13. IF ELSE con BETWEEN

El operador BETWEEN nos permite verificar si un valor se encuentra dentro de un rango de valores. Podemos combinarlo con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener el nombre de los productos y un mensaje que indique si su precio está entre 50 y 100. Podemos hacerlo así:

SELECT nombre,
  IF(precio BETWEEN 50 AND 100,
    'Precio en rango',
    'Precio fuera de rango'
  ) AS rango
FROM productos;

En este caso, utilizamos BETWEEN para verificar si el precio del producto se encuentra entre 50 y 100. Luego, utilizamos IF ELSE para mostrar un mensaje en función del resultado.

14. IF ELSE con LIKE

El operador LIKE nos permite buscar patrones en cadenas de texto. Podemos combinarlo con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener el nombre de los productos y un mensaje que indique si su nombre contiene la palabra ‘iPhone’. Podemos hacerlo así:

SELECT nombre,
  IF(nombre LIKE '%iPhone%',
    'Producto de Apple',
    'Otro producto'
  ) AS tipo
FROM productos;

En este caso, utilizamos LIKE para verificar si el nombre del producto contiene la palabra ‘iPhone’. Luego, utilizamos IF ELSE para mostrar un mensaje en función del resultado.

15. IF ELSE con REGEXP

El operador REGEXP nos permite buscar patrones más complejos en cadenas de texto utilizando expresiones regulares. Podemos combinarlo con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener el nombre de los clientes y un mensaje que indique si su email es válido o no. Podemos hacerlo así:

SELECT nombre,
  IF(email REGEXP '^[A-Za-z0-9._%+-]+@[A-Za-z0-9.-]+\\.[A-Z]{2,}$',
    'Email válido',
    'Email inválido'
  ) AS validacion
FROM clientes;

En este caso, utilizamos REGEXP con una expresión regular para verificar si el email del cliente cumple con un formato válido. Luego, utilizamos IF ELSE para mostrar un mensaje en función del resultado.

16. IF ELSE con DATE_FORMAT

La función DATE_FORMAT nos permite dar formato a fechas en nuestras consultas. Podemos combinarla con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener el nombre de los pedidos y un mensaje que indique si se realizaron en fin de semana o no. Podemos hacerlo así:

SELECT id,
  IF(DATE_FORMAT(fecha, '%w') IN (0, 6),
    'Fin de semana',
    'Día de semana'
  ) AS dia
FROM pedidos;

En este caso, utilizamos DATE_FORMAT para obtener el día de la semana de la fecha del pedido (0 para domingo, 6 para sábado). Luego, utilizamos IF ELSE con IN para verificar si el día es 0 o 6 y mostrar un mensaje en función del resultado.

17. IF ELSE con GROUP_CONCAT

La función GROUP_CONCAT nos permite concatenar valores de múltiples filas en una sola cadena. Podemos combinarla con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener el nombre de los clientes y un mensaje que indique si han comprado ‘iPhone’ o ‘Samsung’. Podemos hacerlo así:

SELECT c.nombre,
  IF(GROUP_CONCAT(p.nombre) LIKE '%iPhone%', 
    'Compró iPhone',
    IF(GROUP_CONCAT(p.nombre) LIKE '%Samsung%',
      'Compró Samsung',
      'No compró iPhone ni Samsung'
    )
  ) AS mensaje
FROM clientes c
JOIN pedidos pe ON c.id = pe.cliente_id
JOIN productos p ON pe.producto_id = p.id
GROUP BY c.id;

En este caso, utilizamos GROUP_CONCAT para concatenar los nombres de los productos comprados por cada cliente. Luego, utilizamos IF ELSE con LIKE para verificar si la cadena resultante contiene ‘iPhone’ o ‘Samsung’ y mostrar un mensaje en función del resultado.

18. IF ELSE con HAVING

La cláusula HAVING nos permite filtrar los resultados de una consulta con GROUP BY en función de ciertas condiciones. Podemos combinarla con IF ELSE para tomar decisiones en función del resultado. Por ejemplo, supongamos que queremos obtener la cantidad de pedidos por cliente y un mensaje que indique si son «Cliente VIP» (más de 10 pedidos) o «Cliente regular». Podemos hacerlo así:

SELECT c.nombre, COUNT(p.id) AS total_pedidos,
  IF(COUNT(p.id) > 10,
    'Cliente VIP',
    'Cliente regular'
  ) AS tipo_cliente
FROM clientes c
JOIN pedidos p ON c.id = p.cliente_id
GROUP BY c.id
HAVING COUNT(p.id) > 5;

En este caso, utilizamos GROUP BY para agrupar los pedidos por cliente y contar la cantidad de pedidos de cada uno con COUNT. Luego, utilizamos HAVING para filtrar solo los clientes con más de 5 pedidos. Finalmente, utilizamos IF ELSE para mostrar un mensaje en función de si el total de pedidos es mayor que 10 o no.

Preguntas frecuentes sobre IF ELSE MySQL con ejemplos

1. ¿Qué es la sentencia IF ELSE en MySQL?

La sentencia IF ELSE en MySQL es una estructura condicional que nos permite ejecutar diferentes acciones en función de si se cumple o no una determinada condición.

2. ¿Cómo se utiliza la sentencia IF ELSE en MySQL?

La sintaxis básica de la sentencia IF ELSE en MySQL es la siguiente:

IF(condición, valor_si_verdadero, valor_si_falso)

3. ¿Se pueden anidar varias sentencias IF ELSE en MySQL?

Sí, se pueden anidar múltiples sentencias IF ELSE para evaluar diferentes condiciones y tomar decisiones en función de los resultados.

4. ¿Se puede combinar IF ELSE con otras funciones y cláusulas de MySQL?

Sí, IF ELSE se puede combinar con muchas otras funciones y cláusulas de MySQL, como funciones de agregación, subconsultas, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT y HAVING, entre otras.

5. ¿Cuál es la diferencia entre IF ELSE y CASE en MySQL?

Tanto IF ELSE como CASE nos permiten ejecutar diferentes acciones en función de ciertas condiciones. La principal diferencia es que IF ELSE se utiliza para evaluar una única condición y ejecutar una acción si se cumple o no, mientras que CASE se utiliza para evaluar múltiples condiciones y ejecutar diferentes acciones en función del resultado.

6. ¿Hay alguna limitación en el uso de IF ELSE en MySQL?

No hay limitaciones significativas en el uso de IF ELSE en MySQL, más allá de las propias limitaciones de la lógica y la sintaxis de las condiciones que se evalúan. Sin embargo, es importante tener en cuenta que el uso excesivo o inadecuado de IF ELSE puede afectar el rendimiento de las consultas y hacer que el código sea más difícil de leer y mantener.

Conclusión de IF ELSE MySQL con ejemplos

En este artículo, hemos aprendido qué es la sentencia IF ELSE en MySQL y cómo se utiliza para ejecutar diferentes acciones en función de ciertas condiciones. Hemos visto 18 ejemplos prácticos de uso de IF ELSE, combinándolo con otras funciones y cláusulas de MySQL como funciones de agregación, subconsultas, CASE, IFNULL, NULLIF, EXISTS, IN, BETWEEN, LIKE, REGEXP, DATE_FORMAT, GROUP_CONCAT y HAVING.

Espero que estos ejemplos hayan sido de utilidad y que te ayuden a entender mejor cómo utilizar IF ELSE entus consultas de MySQL.  ¡Y no olvides compartir este artículo con tus amigos y colegas si te ha parecido interesante!

TecnoDigital

Apasionado por la tecnología y el desarrollo de software, me adentro en el universo de sistemas e informática con el objetivo de fomentar la innovación y resolver desafíos complejos.
Botón volver arriba