SQL Server: la condición existe

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.

SQL Server: la condición existe

Este tutorial de SQL Server describe cómo usar Condición de existencia Sintaxis y ejemplos en SQL Server (Transact-SQL).

La condición EXISTS de SQL Server (Transact-SQL) se usa junto con una subconsulta y se considera satisfecha si la subconsulta devuelve al menos una fila. Se puede usar en declaraciones SELECT, INSERT, UPDATE o DELETE.

sintaxis

La sintaxis de la condición EXISTS en SQL Server (Transact-SQL) es:

WHERE EXISTS ( subquery );

parámetro o parámetro

Subconsultas Una subconsulta es una instrucción SELECT. Si la subconsulta devuelve al menos un registro en su conjunto de resultados, la cláusula EXISTS se evaluará como verdadera y se cumplirá la condición EXISTS. Si la subconsulta no devuelve registros, la cláusula EXISTS se evalúa como falsa y no se cumple la condición EXISTS.

notas

  • Las instrucciones SQL que usan condiciones EXISTS son muy ineficientes porque la subconsulta se vuelve a ejecutar para cada fila en la tabla de consulta externa. Hay formas más eficientes de escribir la mayoría de las consultas que no usan condiciones EXISTS.

Ejemplo: uso de la instrucción SELECT

Veamos un ejemplo sencillo.

La siguiente es una declaración SELECT que usa la condición EXISTS:

SELECT *
FROM employees
WHERE EXISTS (SELECT *
              FROM contacts
              WHERE employees.last_name = contacts.last_name
              AND employees.first_name = contacts.first_name);

Este ejemplo de condición de SQL Server EXISTS devuelve todos los registros en la tabla de empleados donde al menos un registro en la tabla de contactos tiene un apellido y un nombre coincidentes.

Ejemplo: declaración SELECT usando NOT EXISTS

Las condiciones de SQL Server EXISTS también se pueden combinar con el operador NOT.

Por ejemplo,

SELECT *
FROM employees
WHERE NOT EXISTS (SELECT *
                  FROM contacts
                  WHERE employees.last_name = contacts.last_name
                  AND employees.first_name = contacts.first_name);

Este ejemplo de SQL Server EXISTE devolverá todos los registros en la tabla de empleados No Un registro en la tabla de contactos que coincida con last_name y first_name.

Ejemplo: uso de la instrucción INSERT

El siguiente es un ejemplo de una declaración INSERT usando una condición EXISTS:

INSERT INTO contacts
(contact_id, contact_name)
SELECT supplier_id, supplier_name
FROM suppliers
WHERE EXISTS (SELECT *
              FROM orders
              WHERE suppliers.supplier_id = orders.supplier_id);

Ejemplo: uso de la instrucción UPDATE

El siguiente es un ejemplo de una instrucción UPDATE que usa la condición EXISTS:

UPDATE suppliers
SET supplier_name = (SELECT customers.name
                     FROM customers
                     WHERE customers.customer_id = suppliers.supplier_id)
WHERE EXISTS (SELECT customers.name
              FROM customers
              WHERE customers.customer_id = suppliers.supplier_id);

Ejemplo: uso de la sentencia DELETE

El siguiente es un ejemplo de una instrucción DELETE que usa la condición EXISTS:

DELETE FROM contacts
WHERE EXISTS (SELECT *
              FROM employees
              WHERE employees.last_name = contacts.last_name);
(Visited 9 times, 1 visits today)