Skip to content
Natuurondernemer
    diciembre 28, 2020 by admin

    IN (Transact-SQL)

    IN (Transact-SQL)
    diciembre 28, 2020 by admin
    • 08/29/2016
    • 4 minutos para leer
      • c
      • j
      • r
      • M
      • i
      • +5
    • Se aplica a: síSQL Server (todas las versiones compatibles) síAzure SQL Database síAzure SQL Managed Instance síAzure Synapse Analytics síParallel Data Warehouse

      Determina si un valor especificado coincide con cualquier valor de una subconsulta o una lista.

      Icono de enlace del temaConvenciones de sintaxis de Transact-SQL

      Sintaxis

    test_expression IN ( subquery | expression ) 

    Nota

    Para ver la sintaxis de Transact-SQL para SQL Server 2014 y anteriores, consulte la documentación de las versiones anteriores.

    Argumentos

    expresión_de_prueba
    Es cualquier expresión válida.

    subconsulta
    Es una subconsulta que tiene un conjunto de resultados de una columna. Esta columna debe tener el mismo tipo de datos que test_expression.

    expression
    Es una lista de expresiones para probar una coincidencia. Todas las expresiones deben ser del mismo tipo que test_expression.

    Tipos de resultado

    Boolean

    Valor del resultado

    Si el valor de test_expression es igual a cualquier valor devuelto por la subconsulta o es igual a cualquier expresión de la lista separada por comas, el valor del resultado es TRUE; en caso contrario, el valor del resultado es FALSE.

    Usar NOT IN niega el valor de la subconsulta o la expresión.

    Precaución

    Cualquier valor nulo devuelto por la subconsulta o la expresión que se compare con test_expression usando IN o NOT IN devuelve UNKNOWN. El uso de valores nulos junto con IN o NOT IN puede producir resultados inesperados.

    Observaciones

    Incluir explícitamente un número extremadamente grande de valores (muchos miles de valores separados por comas) dentro de los paréntesis, en una cláusula IN puede consumir recursos y devolver errores 8623 o 8632. Para solucionar este problema, almacene los elementos de la lista IN en una tabla y utilice una subconsulta SELECT dentro de una cláusula IN.

    Error 8623:

    The query processor ran out of internal resources and could not produce a query plan. This is a rare event and only expected for extremely complex queries or queries that reference a very large number of tables or partitions. Please simplify the query. If you believe you have received this message in error, contact Customer Support Services for more information.

    Error 8632:

    Internal error: An expression services limit has been reached. Please look for potentially complex expressions in your query, and try to simplify them.

    Ejemplos

    A. Comparando OR e IN

    El siguiente ejemplo selecciona una lista de los nombres de los empleados que son ingenieros de diseño, diseñadores de herramientas o asistentes de marketing.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName, e.JobTitle FROM Person.Person AS p JOIN HumanResources.Employee AS e ON p.BusinessEntityID = e.BusinessEntityID WHERE e.JobTitle = 'Design Engineer' OR e.JobTitle = 'Tool Designer' OR e.JobTitle = 'Marketing Assistant'; GO 

    Sin embargo, se obtienen los mismos resultados utilizando IN.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName, e.JobTitle FROM Person.Person AS p JOIN HumanResources.Employee AS e ON p.BusinessEntityID = e.BusinessEntityID WHERE e.JobTitle IN ('Design Engineer', 'Tool Designer', 'Marketing Assistant'); GO 

    Aquí se muestra el conjunto de resultados de ambas consultas.

    FirstName LastName Title --------- --------- --------------------- Sharon Salavaria Design Engineer Gail Erickson Design Engineer Jossef Goldberg Design Engineer Janice Galvin Tool Designer Thierry D'Hers Tool Designer Wanida Benshoof Marketing Assistant Kevin Brown Marketing Assistant Mary Dempsey Marketing Assistant (8 row(s) affected) 

    B. Usando IN con una subconsulta

    El siguiente ejemplo encuentra todos los ID de los vendedores de la tabla SalesPerson de los empleados que tienen una cuota de ventas superior a 250.000 dólares en el año, y luego selecciona de la tabla Employee los nombres de todos los empleados donde EmployeeID que coinciden con los resultados de la subconsulta SELECT.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName FROM Person.Person AS p JOIN Sales.SalesPerson AS sp ON p.BusinessEntityID = sp.BusinessEntityID WHERE p.BusinessEntityID IN (SELECT BusinessEntityID FROM Sales.SalesPerson WHERE SalesQuota > 250000); GO 

    Aquí está el conjunto de resultados.

    FirstName LastName --------- -------- Tsvi Reiter Michael Blythe Tete Mensa-Annan (3 row(s) affected) 

    C. Uso de NOT IN con una subconsulta

    El siguiente ejemplo encuentra los vendedores que no tienen una cuota superior a 250.000 dólares. NOT IN encuentra los vendedores que no coinciden con los elementos de la lista de valores.

    -- Uses AdventureWorks SELECT p.FirstName, p.LastName FROM Person.Person AS p JOIN Sales.SalesPerson AS sp ON p.BusinessEntityID = sp.BusinessEntityID WHERE p.BusinessEntityID NOT IN (SELECT BusinessEntityID FROM Sales.SalesPerson WHERE SalesQuota > 250000); GO 

    Ejemplos: Azure Synapse Analytics y Parallel Data Warehouse

    D. Uso de IN y NOT IN

    El siguiente ejemplo encuentra todas las entradas de la tabla FactInternetSales que coinciden con los valores de SalesReasonKey de la tabla DimSalesReason.

    -- Uses AdventureWorks SELECT * FROM FactInternetSalesReason WHERE SalesReasonKey IN (SELECT SalesReasonKey FROM DimSalesReason); 

    El siguiente ejemplo encuentra todas las entradas de la tabla FactInternetSalesReason que no coinciden con los valores de SalesReasonKey de la tabla DimSalesReason.

    -- Uses AdventureWorks SELECT * FROM FactInternetSalesReason WHERE SalesReasonKey NOT IN (SELECT SalesReasonKey FROM DimSalesReason); 

    E. Uso de IN con una lista de expresiones

    El siguiente ejemplo encuentra todos los ID de los vendedores de la tabla DimEmployee para los empleados que tienen un nombre que es Mike o Michael.

    -- Uses AdventureWorks SELECT FirstName, LastName FROM DimEmployee WHERE FirstName IN ('Mike', 'Michael'); 

    Vea también

    CASE (Transact-SQL)
    Expresiones (Transact-SQL)
    Funciones incorporadas (Transact-SQL)
    Operadores (Transact-SQL)
    SELECT (Transact-SQL)
    WHERE (Transact-SQL)
    ALL (Transact-SQL)
    SOME | ANY (Transact-SQL)

    Previous articleLa mentira de la lactancia: cómo la lactancia me hizo ganar pesoNext article WMFE-FM

    Deja una respuesta Cancelar la respuesta

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

    Entradas recientes

    • Encontrarte a ti mismo (y a los demás…) en los anuarios online
    • Cómo configurar un minero ASIC de bitcoin
    • Chris Martin cumple años en Disneylandia con Dakota Johnson
    • ¿Qué es un sitio del Superfondo?
    • Los gusanos de la sangre con cebo de pesca tienen picaduras de abeja
    • 42 recetas de sopa de olla de cocción lenta saludables
    • 3 sorprendentes riesgos de una mala postura
    • Peces Betta hembra
    • ¿Qué son las corrientes oceánicas?
    • Nike se gastó 15.000 dólares en una máquina especial sólo para fabricar las zapatillas del pívot de Florida State Michael Ojo

    Archivos

    • abril 2021
    • marzo 2021
    • febrero 2021
    • enero 2021
    • diciembre 2020
    • noviembre 2020
    • octubre 2020
    • septiembre 2020
    • agosto 2020
    • julio 2020
    • junio 2020
    • mayo 2020
    • abril 2020
    • DeutschDeutsch
    • NederlandsNederlands
    • EspañolEspañol
    • FrançaisFrançais
    • PortuguêsPortuguês
    • ItalianoItaliano
    • PolskiPolski

    Meta

    • Acceder
    • Feed de entradas
    • Feed de comentarios
    • WordPress.org
    Posterity WordPress Theme