PERO subconsulta o Solicitud interna o Consulta anidada es una consulta en otra consulta de SQL Server incrustada en una cláusula WHERE. Se utiliza una subconsulta para devolver datos que se utilizarán en la consulta principal como condición para restringir aún más los datos recuperados.
Las subconsultas se pueden utilizar con sentencias SELECT, INSERT, UPDATE y DELETE junto con sentencias como =, <,>,> =, <=, EN, ENTRE, etc.
Hay algunas reglas que las subconsultas deben seguir:
Debe encerrar la subconsulta entre paréntesis.
La subconsulta debe incluir una cláusula SELECT y una cláusula FROM.
La subconsulta puede incluir cláusulas WHERE, GROUP BY y HAVING opcionales.
La subconsulta no puede incluir cláusulas COMPUTE o FOR BROWSE.
Solo puede incluir la cláusula ORDER BY si se incluye la cláusula TOP.
Puede anidar subconsultas hasta 32 niveles.
Las subconsultas se usan más comúnmente con la instrucción SELECT. A continuación se muestra la sintaxis básica.
SELECT column_name [, column_name ] FROM table1 [, table2 ] WHERE column_name OPERATOR (SELECT column_name [, column_name ] FROM table1 [, table2 ] [WHERE])
Considere la tabla CLIENTES con las siguientes entradas.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 2000.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
Apliquemos la siguiente subconsulta con una instrucción SELECT.
SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS WHERE SALARY > 4500)
El comando anterior dará el siguiente resultado.
ID NAME AGE ADDRESS SALARY 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 8500.00 7 Muffy 24 Indore 10000.00
Las subconsultas también se pueden usar con instrucciones INSERT. La instrucción INSERT utiliza los datos devueltos por la subconsulta para insertarlos en otra tabla. Los datos seleccionados en una subconsulta se pueden modificar utilizando cualquiera de las funciones de símbolo, fecha o número.
A continuación se muestra la sintaxis básica.
INSERT INTO table_name [ (column1 [, column2 ]) ] SELECT [ *|column1 [, column2 ] FROM table1 [, table2 ] [ WHERE VALUE OPERATOR ]
Considere la tabla CUSTOMERS_BKP con una estructura similar a la tabla CUSTOMERS. A continuación se muestra la sintaxis para copiar la tabla CUSTOMERS completa a CUSTOMERS_BKP.
INSERT INTO CUSTOMERS_BKP SELECT * FROM CUSTOMERS WHERE ID IN (SELECT ID FROM CUSTOMERS)
La subconsulta se puede utilizar junto con la instrucción UPDATE. Cuando usa una subconsulta con una instrucción UPDATE, puede actualizar una o más columnas en la tabla.
A continuación se muestra la sintaxis básica.
UPDATE table SET column_name = new_value [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]
Supongamos que tenemos una tabla CUSTOMERS_BKP que es una copia de seguridad de la tabla CUSTOMERS.
El siguiente ejemplo del comando SALARIO actualiza la tabla CLIENTES 0,25 veces para todos los clientes que tienen 27 años o más.
UPDATE CUSTOMERS SET SALARY = SALARY * 0.25 WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >= 27 )
Esto afectará a dos filas y finalmente la tabla CUSTOMERS tendrá los siguientes registros.
ID NAME AGE ADDRESS SALARY 1 Ramesh 32 Ahmedabad 500.00 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 5 Hardik 27 Bhopal 2125.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
La subconsulta se puede utilizar junto con la sentencia DELETE como con cualquiera de las otras sentencias mencionadas anteriormente.
A continuación se muestra la sintaxis básica.
DELETE FROM TABLE_NAME [ WHERE OPERATOR [ VALUE ] (SELECT COLUMN_NAME FROM TABLE_NAME) [ WHERE) ]
Supongamos que tenemos una tabla CUSTOMERS_BKP que es una copia de seguridad de la tabla CUSTOMERS.
El siguiente ejemplo de comando elimina registros de la tabla CLIENTES para todos los clientes que tienen 27 años o más.
DELETE FROM CUSTOMERS WHERE AGE IN (SELECT AGE FROM CUSTOMERS_BKP WHERE AGE >=27 )
Esto afectará a dos filas y finalmente la tabla CUSTOMERS tendrá los siguientes registros.
ID NAME AGE ADDRESS SALARY 2 Khilan 25 Delhi 1500.00 3 kaushik 23 Kota 2000.00 4 Chaitali 25 Mumbai 6500.00 6 Komal 22 MP 4500.00 7 Muffy 24 Indore 10000.00
🚫