Saltar al contenido principal
Intermedio
15 min de lectura

Subconsultas

Consultas anidadas dentro de otras consultas

Las subconsultas son consultas SELECT anidadas dentro de otra consulta.

Tipos de subconsultas

#

Subconsulta escalar (devuelve un valor)

sql
1SELECT nombre, precio2FROM productos3WHERE precio > (SELECT AVG(precio) FROM productos);

#

Subconsulta de fila única

sql
1SELECT * FROM usuarios2WHERE id = (SELECT usuario_id FROM pedidos WHERE total = (SELECT MAX(total) FROM pedidos));

#

Subconsulta de múltiples filas

sql
1SELECT nombre, email2FROM usuarios3WHERE id IN (SELECT usuario_id FROM pedidos WHERE total > 100);

#

Subconsulta correlacionada

sql
1SELECT u.nombre, (2    SELECT COUNT(*) 3    FROM posts p 4    WHERE p.usuario_id = u.id5) as total_posts6FROM usuarios u;

#

EXISTS

sql
1SELECT nombre FROM usuarios u2WHERE EXISTS (3    SELECT 1 FROM pedidos p 4    WHERE p.usuario_id = u.id AND p.total > 5005);

Sintaxis

Sintaxis
sql
1SELECT columnas2FROM tabla3WHERE columna OPERADOR (SELECT columna FROM tabla2 WHERE condición);

Ejemplos

Productos sobre promedio

Productos más caros que el promedio

Ejemplo
sql
1SELECT nombre, precio2FROM productos3WHERE precio > (SELECT AVG(precio) FROM productos)4ORDER BY precio DESC;

Resultado:

| nombre     | precio |
|------------|--------|
| Laptop Pro | 2999   |
| Monitor 4K | 899    |
| Tablet     | 499    |