Subconsultas SQL

Nota: Nos gustaría proporcionarle el contenido de ayuda actual lo más rápido posible en su idioma. Esta página se ha traducido mediante un sistema automático y es posible que contenga imprecisiones o errores gramaticales. Nuestro objetivo es que este contenido sea útil para usted. ¿Puede informarnos sobre si la información le ha sido útil al final de la página? Aquí tiene el artículo en inglés para que pueda consultarlo fácilmente.

Una subconsulta es una instrucción SELECT anidada dentro de una selección, seleccionar... EN, INSERTAR... INTO, DELETE o UPDATE o en otra subconsulta.

Sintaxis

Puede utilizar tres formas de sintaxis para crear una subconsulta:

comparación [CUALQUIER | TODOS LOS | SOME] (instrucciónsql)

expresión [NO] EN (instrucciónsql)

[NO] EXISTS (instrucciónsql)

Una subconsulta consta de estas partes:

Parte

Descripción

comparación

Un expresión y un operador de comparación que compara la expresión con los resultados de la subconsulta.

expresión

Una expresión que se busca en el conjunto de resultados de la subconsulta.

instrucción_sqls

Una instrucción SELECT que sigue el mismo formato y reglas que cualquier otra instrucción SELECT. Debe estar entre paréntesis.


Observaciones

Puede usar una subconsulta en lugar de una expresión en la lista de campos de una instrucción SELECT o en una ubicación o la cláusula HAVING. En una subconsulta, se utiliza una instrucción SELECT para proporcionar un conjunto de valores específicos para evaluar en el WHERE o HAVING expresión de la cláusula.

Use el predicado ANY o SOME, que son sinónimos, para recuperar registros de la consulta principal que satisfagan la comparación con los registros recuperados en la subconsulta. El ejemplo siguiente devuelve todos los productos cuyo precio unitario es mayor que el de cualquier producto vendido con un descuento del 25% o más:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Use el predicado ALL para recuperar solo los registros de la consulta principal que satisfagan la comparación con todos los registros recuperados en la subconsulta. Si ha cambiado alguna a todos en el ejemplo anterior, la consulta devolverá sólo los productos cuyo precio unitario es mayor que la de todos los productos vendidos con un descuento del 25% o más. Esto es mucho más restrictivo.

Use el predicado IN para recuperar solo los registros de la consulta principal para los que algún registro de la subconsulta contiene un valor igual. El ejemplo siguiente devuelve todos los productos con un descuento del 25% o más:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

Por el contrario, puede usar NOT IN para recuperar solo los registros de la consulta principal para los que ningún registro de la subconsulta contiene un valor igual.

Use el predicado EXISTS (con la opcional palabra reservada NOT) en comparaciones verdadero o falso para determinar si la subconsulta devuelve todos los registros.

También puede usar alias de nombre de tabla en una subconsulta para hacer referencia a tablas enumeradas en una cláusula FROM fuera de la subconsulta. El ejemplo siguiente devuelve los nombres de los empleados cuyos salarios son igual o mayor que el promedio salarios de todos los empleados que tiene el mismo cargo. La tabla Employees se asigna el alias "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

En el ejemplo anterior, la AS palabra reservada es opcional.

En las consultas de tabla de referencias cruzadas se permiten algunas subconsultas, específicamente, como predicados (las de la cláusula WHERE). No se permiten subconsultas como resultado (las de la lista de selección) en las consultas de tabla de referencias cruzadas.



Ampliar sus conocimientos de Office
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×