Beruflich Dokumente
Kultur Dokumente
BASE DE DATOS
Las que generan una columna de valores, aparecen con el operador IN o con un
operador de comparación modificado con ANY, SOME o ALL.
Las que pueden generar cualquier número de columnas y filas, son utilizadas en
pruebas de existencia especificadas con EXISTS.
Tipos de subconsulta
• Con alias Para obtener más información, consulte Subconsultas con alias.
• Con IN o NOT IN. Para obtener más información, consulte Subconsultas con IN y
Subconsultas con NOT IN.
• En instrucciones UPDATE, DELETE y INSERT. Para obtener más información,
consulte Subconsultas en las instrucciones UPDATE, DELETE e INSERT.
• Con los operadores de comparación. Para obtener más información, consulte
Subconsultas con operadores de comparación.
• Con ANY, SOME o ALL. Para obtener más información, consulte Operadores de
comparación modificados por ANY, SOME o ALL.
• Con EXISTS o NOT EXISTS. Para obtener más información, consulte
Subconsultas con EXISTS y Subconsultas con NOT EXISTS.
• En lugar de una expresión. Para obtener más información, consulte
Subconsultas usadas en lugar de una expresión.
USE NAME;
GO
SELECT LASTNAME, FIRSTNAME
FROM NAMETABLA
WHERE NAMEATRIBUTO1 IN
(SELECT NAMEATRIBUTO2
FROM NAMETABLA2
WHERE NAMEATRIBUTO3 IN
(SELECT NAMEATRIUTO3
FROM ATRIBUTO)
);
GO
Subconsultas con IN
El resultado de una subconsulta especificada con IN (o con NOT IN) es una lista de cero
o más valores. Una vez que la consulta devuelve los resultados, la consulta externa
hace uso de ellos.
USE ADVENTUREWORKS2016;
GO
SELECT NAME
FROM PRODUCTION.PRODUCT
WHERE PRODUCTSUBCATEGORYID IN
(SELECT PRODUCTSUBCATEGORYID
FROM PRODUCTION.PRODUCTSUBCATEGORY
WHERE NAME = 'WHEELS');
GO
Las subconsultas que empiezan por la palabra clave NOT IN, devuelven también una
lista de cero o más valores.
USE AdventureWorks2016;
GO
SELECT Name
FROM Production.Product
WHERE ProductSubcategoryID NOT IN
(SELECT ProductSubcategoryID
FROM Production.ProductSubcategory
WHERE Name = 'Mountain Bikes'
OR Name = 'Road Bikes'
OR Name = 'Touring Bikes');
GO
Subconsultas en las instrucciones UPDATE, DELETE e INSERT
USE ADVENTUREWORKS2016;
GO
UPDATE PRODUCTION.PRODUCT
SET LISTPRICE = LISTPRICE * 2
WHERE PRODUCTID IN
(SELECT PRODUCTID
FROM PURCHASING.PRODUCTVENDOR
WHERE BUSINESSENTITYID = 1540);
GO
Las subconsultas se pueden presentar con uno de los operadores de comparación (=, <
>, >, > =, <, ! >, ! < o < =).
Para usar una subconsulta presentada con un operador de comparación sin modificar,
debe estar suficientemente familiarizado con los datos y con la naturaleza del
problema para saber que la subconsulta devolverá exactamente un valor.
Cuando una subconsulta se especifica con la palabra clave EXISTS, funciona como una
prueba de existencia. La cláusula WHERE de la consulta externa comprueba si existen
las filas devueltas por la subconsulta. En realidad, la subconsulta no produce ningún
dato, devuelve el valor TRUE o FALSE.
Una subconsulta que se especifica con EXISTS tiene la sintaxis siguiente:
NOT EXISTSS funciona igual que EXISTS, con la diferencia de que la cláusula WHERE en
la que se utiliza se cumple si la subconsulta no devuelve ninguna fila.
En Transact-SQL, una subconsulta se puede usar en el lugar en que se puede usar una
expresión en las instrucciones SELECT, UPDATE, INSERT y DELETE, excepto en una lista
ORDER BY.