Tema SQL
Subconsulta correlacionada
La subconsulta referencia columnas de la consulta exterior y se evalúa en contexto por fila.
Descripción
Útil para EXISTS, comparaciones por fila o ranking por grupo antes de ventanas. Puede ser costosa si el optimizador no la reescribe (manual §14.3).
Estructura general
Forma habitual de la sentencia: orden de cláusulas, qué parte filtra, agrupa o proyecta columnas, y qué devuelve el motor. Cópiala como plantilla y sustituye nombres por tus tablas reales.
SELECT externa.col
FROM tabla externa
WHERE expr operador (
SELECT agg(interna.col)
FROM otra interna
WHERE interna.ref = externa.id
);
Componentes
Cada componente tiene un papel concreto en la ejecución lógica de la sentencia. Léelos en orden: así entiendes qué puedes omitir, qué es obligatorio y qué expresiones son válidas en cada sitio según tu motor.
- Correlación
- La subconsulta “ve” valores de la fila actual de la externa.
Ejemplos
Ejemplo 1
SELECT e.nombre, e.salario
FROM empleados e
WHERE e.salario > (
SELECT AVG(e2.salario)
FROM empleados e2
WHERE e2.departamento_id = e.departamento_id
);
Ejemplo 2
DELETE FROM lineas l WHERE NOT EXISTS (SELECT 1 FROM cabeceras c WHERE c.id = l.cab_id);
Los ejemplos son ilustrativos. En producción usa consultas parametrizadas (prepared statements), revisa índices y aplica el principio de menor privilegio en cuentas de base de datos.