Subconsultas escalares, de fila y de tabla
Use subconsultas que devuelvan un único valor, una única fila o una tabla completa, y colóquelas en las cláusulas SELECT, FROM y WHERE.
Subconsultas escalares, de fila y de tabla es una lección gratuita de SQL Academy en CoddyKit. Esta es la lección 1 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de SQL Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué es una subconsulta?
Una subconsulta es un SELECT dentro de otra instrucción SQL. Puede ser:
- Una subconsulta escalar — devuelve un único valor
- Una subconsulta de fila — devuelve una única fila
- Una subconsulta de tabla — devuelve una relación (se usa en FROM)
Subconsulta escalar
Se usa en cualquier lugar donde se espera un único valor:
SELECT id, total,
total - (SELECT AVG(total) FROM orders) AS diff_from_avg
FROM orders
WHERE created_at >= NOW() - INTERVAL '30 days';Subconsulta de fila
Devuelve una fila con varias columnas. Es menos habitual y se usa principalmente con constructores de filas:
SELECT *
FROM orders
WHERE (status, country) = (
SELECT status, country FROM orders WHERE id = 1
);Subconsulta de tabla en FROM
Trate el resultado de una consulta como una tabla temporal:
SELECT country, AVG(big_order_total) AS avg_big
FROM (
SELECT country, total AS big_order_total
FROM orders
WHERE total > 1000
) AS sub
GROUP BY country;Alias para subconsultas en FROM
Toda subconsulta en FROM requiere un alias en PostgreSQL, incluso si no lo utiliza:
SELECT * FROM (SELECT 1) sub; -- "sub" requiredSubconsultas en WHERE
Filtre mediante un conjunto de valores derivados:
SELECT * FROM users
WHERE id IN (
SELECT user_id FROM orders WHERE total > 100
);EXISTS / NOT EXISTS
Compruebe si una subconsulta devuelve al menos una fila:
SELECT * FROM users u
WHERE EXISTS (
SELECT 1 FROM orders o WHERE o.user_id = u.id
);Subconsultas en SELECT
Incruste una subconsulta escalar por fila:
SELECT id, full_name,
(SELECT COUNT(*) FROM orders o WHERE o.user_id = u.id) AS order_count
FROM users u;
-- Often readable, but a LEFT JOIN + GROUP BY is usually faster.Subconsultas como expresiones
Una subconsulta escalar que devuelve más de una fila produce un error:
SELECT (SELECT email FROM users);
-- ERROR: more than one row returned by a subquery used as an expressionCuándo refactorizar a JOIN
Muchas expresiones «x IN (SELECT...)» se pueden reescribir como JOIN. Elija la forma que resulte más clara; los planificadores modernos suelen producir el mismo plan.
Subconsultas frente a CTE
Si necesita la misma subconsulta dos veces, asígnele un nombre mediante una CTE; esto se explica en la siguiente lección.
Resumen
Las subconsultas tienen tres variantes.
- Escalar en SELECT/WHERE
- De fila en pruebas de igualdad
- De tabla en FROM
- EXISTS para comprobar «cualquier coincidencia»
Comprobación rápida
¿Qué forma de subconsulta se usa dentro de una cláusula FROM como tabla temporal?
Preguntas frecuentes
¿La lección «Subconsultas escalares, de fila y de tabla» es gratis?
Sí — el texto completo de «Subconsultas escalares, de fila y de tabla» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de SQL Academy, actualiza a CoddyKit PRO. El curso de SQL Academy incluye 4 lecciones en total.
¿Qué aprenderé en «Subconsultas escalares, de fila y de tabla»?
Use subconsultas que devuelvan un único valor, una única fila o una tabla completa, y colóquelas en las cláusulas SELECT, FROM y WHERE. Practicas SQL Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.
¿Necesito experiencia previa para empezar SQL Academy?
No se requiere experiencia previa. SQL Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 1 de 4.
¿Cuánto tiempo toma la lección «Subconsultas escalares, de fila y de tabla»?
La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.
¿Puedo escribir y ejecutar código en esta lección de SQL Academy?
Sí. Cada lección de SQL Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.
Todas las lecciones de este curso
- Subconsultas escalares, de fila y de tabla
- Subconsultas correlacionadas y no correlacionadas
- Expresiones de tabla comunes (WITH)
- CTE recursivas para jerarquías