MySQL: 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.

MySQL: la condición existe

Este tutorial de MySQL explica cómo usar MySQL Condición de existencia Con sintaxis y ejemplos.

describir

La condición MySQL EXISTS 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 MySQL es:

WHERE EXISTS ( subquery );

parámetro o parámetro

Las subconsultas suelen ser declaraciones SELECT que comienzan con SELECT *, no listas de expresiones ni nombres de columnas. MySQL ignora las listas de expresiones en las subconsultas de todos modos.

notas

  • Las declaraciones SQL que usan condiciones EXISTS en MySQL 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 instrucción SELECT que usa la condición MySQL EXISTS:

SELECT *
FROM customers
WHERE EXISTS (SELECT *
              FROM order_details
              WHERE customers.customer_id = order_details.customer_id);

Este ejemplo de condición EXISTE de MySQL devolverá todos los registros en la tabla de clientes en los que haya al menos un registro en la tabla detalles_pedido con un id_cliente coincidente.

Ejemplo: declaración SELECT usando NOT EXISTS

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

Por ejemplo,

SELECT *
FROM customers
WHERE NOT EXISTS (SELECT *
                  FROM order_details
                  WHERE customers.customer_id = order_details.customer_id);

Este ejemplo de MySQL EXISTE devolverá todos los registros en la tabla de clientes No Un registro en la tabla order_details para un customer_id dado.

Ejemplo: uso de la instrucción INSERT

El siguiente es un ejemplo de una declaración INSERT usando la condición MySQL 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 utiliza la condición EXISTS de MySQL:

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

Ejemplo: uso de la sentencia DELETE

El siguiente es un ejemplo de una declaración DELETE usando la condición MySQL EXISTS:

DELETE FROM suppliers
WHERE EXISTS (SELECT *
              FROM orders
              WHERE suppliers.supplier_id = orders.supplier_id);