Los datos expuestos en este blog, son solo de índole informativo. Por favor realiza siempre una copia de seguridad antes de realizar cualquier cambio en tu proyecto.
Servidor SQL: Subconsultas
Este tutorial de SQL Server describe cómo usar subconsulta Sintaxis y ejemplos en SQL Server (Transact-SQL).
¿Qué es una subconsulta en SQL Server?
En SQL Server, una subconsulta es una consulta dentro de una consulta. Puede crear subconsultas en sentencias SQL. Estas subconsultas pueden residir en la cláusula WHERE, la cláusula FROM o la cláusula SELECT.
notas
- En SQL Server (Transact-SQL), las subconsultas también se conocen como CONSULTA INTERNA o SELECCIÓN INTERNA.
- En SQL Server (Transact-SQL), una consulta principal que contiene una subconsulta también se denomina CONSULTA EXTERNA o SELECCIÓN EXTERNA.
Dónde cláusula
En la mayoría de los casos, las subconsultas se encuentran en la cláusula WHERE.Estas subconsultas también se denominan Subconsultas anidadas.
Por ejemplo:
SELECT p.product_id, p.product_name FROM products p WHERE p.product_id IN (SELECT inv.product_id FROM inventory inv WHERE inv.quantity > 10);
La parte de la subconsulta de la instrucción SELECT anterior es:
(SELECT inv.product_id FROM inventory inv WHERE inv.quantity > 10);
Esta subconsulta le permite encontrar todos los valores de product_id con una cantidad superior a 10 de la tabla de inventario. Luego use esa subconsulta para filtrar los resultados de la consulta principal con una condición IN.
Esta subconsulta también se puede escribir como una unión INTERNA de la siguiente manera:
SELECT p.product_id, p.product_name FROM products p INNER JOIN inventory inv ON p.product_id = inv.product_id WHERE inv.quantity > 10;
Este INNER JOIN se ejecutará de manera más eficiente que la subconsulta original. Sin embargo, es importante tener en cuenta que no todas las subconsultas se pueden reescribir mediante combinaciones.
Cláusula DESDE
Las subconsultas también se pueden encontrar en la cláusula FROM.estos se llaman vista en línea.
Por ejemplo:
SELECT suppliers.supplier_name, subquery1.total_amt FROM suppliers, (SELECT supplier_id, SUM(orders.amount) AS total_amt FROM orders GROUP BY supplier_id) subquery1 WHERE subquery1.supplier_id = suppliers.supplier_id;
En este ejemplo, creamos una subconsulta en la cláusula FROM de la siguiente manera:
(SELECT supplier_id, SUM(orders.amount) AS total_amt FROM orders GROUP BY supplier_id) subquery1
La subconsulta tiene un alias como subconsulta1. Este será el nombre utilizado para referirse a esta subconsulta o cualquiera de sus campos.
cláusula de elección
Las subconsultas también se pueden encontrar en la cláusula SELECT. Estas funciones generalmente se usan cuando desea usar funciones agregadas (como las funciones SUM, COUNT, MIN o MAX) para recuperar cálculos pero no desea que las funciones agregadas se apliquen a la consulta principal.
Por ejemplo:
SELECT e1.last_name, e1.first_name, (SELECT MAX(salary) FROM employees e2 WHERE e1.employee_id = e2.employee_id) subquery2 FROM employees e1;
En este ejemplo, creamos una subconsulta en la cláusula SELECT de la siguiente manera:
(SELECT MAX(salary) FROM employees e2 WHERE e1.employee_id = e2.employee_id) subquery2
La subconsulta tiene un alias como subconsulta2. Este será el nombre utilizado para referirse a esta subconsulta o cualquiera de sus campos.
El truco para colocar una subconsulta en una cláusula de selección es que la subconsulta debe devolver un solo valor. Esta es la razón por la cual las funciones agregadas como SUM, COUNT, MIN o MAX se usan a menudo en las subconsultas.