SUBCONSULTAS EN MYSQL: MÁS PODER Y CLARIDAD EN LAS CONSULTAS
Las subconsultas, también conocidas como subqueries o consultas anidadas, son una de las herramientas más útiles de SQL. En MySQL, una subconsulta es simplemente una consulta "SELECT" colocada dentro de otra consulta. Esto te permite filtrar, calcular o transformar datos de forma más flexible y legible.Ejemplo básico:
SELECT ...
FROM ...
WHERE columna IN (
SELECT ...
FROM ...
WHERE ...
);
¿Dónde se pueden utilizar las subconsultas en MySQL?
Las subconsultas pueden aparecer en varias cláusulas:| Cláusula | Uso principal |
|---|---|
| "WHERE" | Filtrar filas según un resultado |
| "FROM" | Usar el resultado como tabla derivada |
| "SELECT" | Calcular valores por fila |
| "HAVING" | Filtrar grupos después de un GROUP BY |
| "IN / EXISTS" | Comparar conjuntos de valores |
¿Cómo funcionan?
El proceso se divide en dos pasos claros:- Subconsulta interna: Se ejecuta primero y genera un conjunto de resultados, una o varias filas/columnas..
- Consulta externa: Utiliza ese resultado para filtrar, comparar o calcular y devolver el resultado final.
Tipos de subconsultas en MySQL
Subconsulta no correlacionada
- No depende de la consulta externa
- Se ejecuta una sola vez.
- Su resultado se reutiliza en la consulta principal.
SELECT nombre, salario
FROM empleados
WHERE departamento_id IN (
SELECT id
FROM departamentos
WHERE ubicacion = 'Madrid'
);
Subconsulta correlacionada
- Depende de valores de la consulta externa.
- Se evalúa para cada fila de la consulta principal.
SELECT e.nombre, e.salario
FROM empleados e
WHERE e.salario > (
SELECT AVG(salario)
FROM empleados
WHERE departamento_id = e.departamento_id
);