Subconsulta de SQL Server

Resumen: en este tutorial, aprenderá sobre la subconsulta de SQL Server y cómo utilizar la subconsulta para consultar datos.

Introducción a la subconsulta de SQL Server

Una subconsulta es una consulta anidada dentro de otra declaración como SELECT, INSERT, UPDATE, o DELETE.

Veamos el siguiente ejemplo.

Considere el orders y customers tablas de la base de datos de muestra.

La siguiente declaración muestra cómo usar una subconsulta en la WHERE cláusula de una SELECT declaración para encontrar los pedidos de venta de los clientes que se ubican en New York:

Aquí está el resultado:

En este ejemplo, la siguiente declaración es una subconsulta:

Code language: SQL (Structured Query Language) (sql)

Tenga en cuenta que siempre debe incluir el SELECT consulta de una subconsulta entre paréntesis ().

Una subconsulta también se conoce como consulta interna o selección interna, mientras que la declaración que contiene la subconsulta se llama selección externa o consulta externa:

SQL El servidor ejecuta todo el ejemplo de consulta anterior de la siguiente manera:

Primero, ejecuta la subconsulta para obtener una lista de los números de identificación de los clientes que se encuentran en New York.

Code language: SQL (Structured Query Language) (sql)

En segundo lugar, SQL Server sustituye los números de identificación del cliente devueltos por la subconsulta en el operador IN y ejecuta la consulta externa para obtener el conjunto de resultados final.

Como puedas s ee, al usar la subconsulta, puede combinar dos pasos juntos. La subconsulta elimina la necesidad de seleccionar los números de identificación del cliente y conectarlos a la consulta externa. Además, la consulta en sí se ajusta automáticamente cada vez que cambian los datos del cliente.

Subconsulta anidada

Una subconsulta se puede anidar dentro de otra subconsulta. SQL Server admite hasta 32 niveles de anidamiento. Considere el siguiente ejemplo:

Primero, SQL Server ejecuta la siguiente subconsulta para obtener una lista de números de identificación de marca de las marcas Strider y Trek:

En segundo lugar, SQL Server calcula la lista de precios promedio de todos los productos que pertenecen a esas marcas.

Code language: SQL (Structured Query Language) (sql)

En tercer lugar, SQL Server encuentra los productos cuyo precio de lista es mayor que el precio de lista promedio de todos los productos con el Strider o Trek marca.

Tipos de subconsultas de SQL Server

Puede utilizar una subconsulta en muchos lugares:

  • En lugar de una expresión
  • Con IN o NOT IN
  • Con ANY o ALL
  • Con EXISTS o NOT EXISTS
  • En UPDATE, DELETE, o INSERT declaración
  • En la FROM cláusula

subconsulta de SQL Server se usa en lugar de una expresión

Si una subconsulta devuelve un solo valor, se puede usar en cualquier lugar donde se use una expresión.

En el siguiente ejemplo, una subconsulta se usa como expresión de columna denominada max_list_price en una SELECT instrucción.

La subconsulta de SQL Server se usa con el operador IN

Una subconsulta que se usa con IN devuelve un conjunto de cero o más valores. Una vez que la subconsulta devuelve valores, la consulta externa los utiliza.

La siguiente consulta busca los nombres de todos los productos de bicicletas de montaña y de carretera que venden las tiendas de bicicletas.

Esta consulta se evalúa en dos pasos:

  1. Primero, la consulta interna devuelve una lista de números de identificación de categoría que coinciden con los nombres Mountain Bikes y code Bicicletas de carretera.
  2. En segundo lugar, estos valores se sustituyen en la consulta externa que encuentra los nombres de productos que tienen el número de identificación de categoría que coincide con uno de los valores de la lista.

La subconsulta de SQL Server se usa con CUALQUIER operador

La subconsulta se introduce con el operador ANY que tiene la siguiente sintaxis:

Code language: SQL (Structured Query Language) (sql)

Suponiendo que la subconsulta devuelve una lista de valores v1, v2,… vn. El operador ANY devuelve TRUE si uno de un par de comparación (scalar_expression, vi) evalúa a TRUE; de lo contrario, devuelve FALSE.

Por ejemplo, la siguiente consulta busca los productos cuyos precios de lista son mayores o iguales que el precio de lista promedio de cualquier marca de producto .

Para cada marca, la subconsulta encuentra el precio de lista máximo. La consulta externa usa estos precios máximos y determina qué precio de lista de producto individual es mayor o igual al precio de lista máximo de cualquier marca.

La subconsulta de SQL Server se usa con el operador ALL

El ALL tiene la misma sintaxis que el operador ANY:

Code language: SQL (Structured Query Language) (sql)

El operador ALL devuelve TRUE si todos los pares de comparación (scalar_expression, vi) se evalúan como TRUE; de lo contrario, devuelve FALSE.

La siguiente consulta busca los productos cuyo precio de lista es mayor o igual que el precio de lista promedio devuelto por la subconsulta:

La subconsulta de SQL Server se usa con EXISTS o NOT EXISTS

A continuación se muestra la sintaxis de una subconsulta introducida con el operador EXISTS:

Code language: SQL (Structured Query Language) (sql)

El operador EXISTS devuelve TRUE si la subconsulta devuelve resultados; de lo contrario, devuelve FALSE.

Por otro lado, NOT EXISTS es opuesto a EXISTS operador.

La siguiente consulta busca los clientes que compraron productos en 2017:

Si usa NOT EXISTS en lugar de EXISTS, puede encontrar los clientes que no compraron ningún producto en 2017.

Subconsulta de SQL Server en la cláusula FROM

Suponga que desea encontrar el promedio de la suma de pedidos de todo el personal de ventas. Para hacer esto, primero puede encontrar la cantidad de pedidos por personal:

Luego, puede aplicar la función AVG() a este conjunto de resultados. Dado que una consulta devuelve un conjunto de resultados que parece una tabla virtual, puede colocar toda la consulta en la cláusula FROM de otra consulta como esta:

La consulta que colocas en FROM debe tener un alias de tabla. En este ejemplo, usamos t como el alias de la tabla para la subconsulta. Para llegar al resultado final, SQL Server sigue los siguientes pasos:

  • Ejecute la subconsulta en la cláusula FROM.
  • Utilice el resultado de la subconsulta y ejecute la consulta externa.

En este tutorial, ha aprendido sobre el concepto de subconsulta de SQL Server y cómo utilizar varios tipos de subconsultas para consultar datos.

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *