Una subconsulta es una consulta SELECT que está anidada en una instrucción SELECT, INSERT, UPDATE o DELETE, o dentro de otra subconsulta. En una subconsulta, la instrucción SELECT nos para proporciona un conjunto de uno o más valores que se utilizan para evaluar una expresión.

Una subconsulta se puede utilizar en cualquier parte en la que se permita una expresión. La consulta SELECT de una subconsulta se incluye siempre entre paréntesis.

Una subconsulta puede anidarse dentro de la cláusula WHERE o HAVING de una instrucción SELECT, INSERT, UPDATE o DELETE.



Se puede disponer de hasta 32 niveles de anidamiento, aunque el límite varía dependiendo de la memoria disponible y de la complejidad del resto de las expresiones de la consulta.

Hay tres tipos básicos de subconsultas que son:

Las instrucciones que incluyen una subconsulta normalmente tienen uno de estos formatos:

WHERE expression [NOT] IN (subconsulta)
WHERE expression comparison_operator [ANY | ALL] (subconsulta)
WHERE [NOT] EXISTS (subconsulta)

El predicado IN se emplea para recuperar únicamente aquellos registros de la consulta principal para los que algunos registros de la subconsulta contienen un valor igual. Inversamente se puede utilizar NOT IN para recuperar únicamente aquellos registros de la consulta principal para los que no hay ningún registro de la subconsulta que contenga un valor igual.

Se puede utilizar el predicado ANY para recuperar registros de la consulta principal, que satisfagan la comparación (comparison_operator) con cualquier otro registro recuperado en la subconsulta.

El predicado ALL se utiliza para recuperar únicamente aquellos registros de la consulta principal que satisfacen la comparación con todos los registros recuperados en la subconsulta.

El predicado EXISTS se utiliza en comparaciones de verdad/falso para determinar si la subconsulta devuelve algún registro.

Siguiente Tema: Consulta de Datos - Tablas Resumen operadores y Funciones Oracle