En este nuevo post vamos a ver la cláusula de MySQL HAVING, su misión es agrupar los resultados idénticos devueltos de una consulta SELECT.
Otras sentencias de MySQL que os pueden ser útiles:
Sintaxis de MySQL HAVING
Veamos la sintaxis extraída de su web oficial:
1 2 3 4 |
SELECT nombre_columnas FROM nombre_tablas GROUP BY nombre_columnas HAVING condición |
Repasamos la sintaxis:
- Comenzamos con el SELECT de una o varias columnas.
- Con FROM seleccionamos la tabla
- Esta cláusula se puede/suele usar junto con GROUP BY cuando necesitamos que los resultados agrupados deban cumplir ciertas condiciones que veremos en los ejemplos posteriores. Por lo que no se puede usar la cláusula WHERE con la columna agrupada por GROUP BY, se tiene que hacer con HAVING.
Ejemplos de MySQL HAVING
Veamos con esta serie de ejemplos la funcionalidad de esta cláusula HAVING:
1 2 3 4 |
SELECT nombre_producto, precio_producto FROM productos GROUP BY nombre_producto HAVING MIN(precio_producto) < 20 |
Os explico este primer ejemplo en donde tenemos una tabla donde se guardan los precios históricos de los productos de una tienda, necesitamos mostrar el precio más barato de los productos cuyo valor está por debajo de 20 euros.
- Seleccionamos con SELECT el nombre del producto y el precio de la tabla productos
- Los agrupamos por nombre con GROUP BY.
- Con HAVING ponemos la condición de que el precio muestre el valor mínimo (MIN) que esté por debajo de 20.
1 2 3 4 5 |
SELECT nombre_producto, MIN(precio_producto) FROM productos GROUP BY nombre_producto HAVING MIN(precio_producto) < 20 ORDER BY MIN(precio_producto) ASC |
En este nuevo ejemplo hemos añadido una ordenación para que muestre los precios de menor a mayor, para ellos hemos añadido un ORDER BY sobre el precio mínimo.