Consulta de PostgreSQL DONDE EXISTE

PostgreSQL: Usando la cláusula de donde EXISTE

Cuando se usa cualquier consulta SQL dentro de otra consulta SQL, se llama subconsulta. La consulta complicada se puede escribir fácilmente dividiendo una consulta grande en varias subconsultas. La cláusula EXISTS se usa con una subconsulta en una instrucción SQL. La salida de EXISTS depende del número de registros devueltos por la subconsulta, pero no depende de los valores de los registros. El resultado de EXISTS será true si la subconsulta asociada devuelve al menos una fila. En este tutorial se muestra cómo usar las cláusulas EXISTS y NOT EXISTS en las instrucciones select, insert, update y delete mediante diferentes ejemplos.

Sintaxis de la cláusula EXISTS:

SELECCIONE col1, col2, col3…..
DE nombre1
DONDE EXISTA (SELECCIONE 1
DE
nombre2
DONDE col1=nombre1.col1);

Cree tres tablas denominadas empresa, artículos y clientes e inserte algunos datos. Ejecute la siguiente consulta de selección para mostrar el contenido de estas tablas.

SELECCIONAR * de la empresa;
SELECCIONAR * de los artículos;
SELECCIONE * de los clientes;

Ejemplo-1: Uso de la cláusula EXISTS en SELECT query

(a) EXISTS

La siguiente consulta recuperará registros de la tabla items en función de la tabla company. La subconsulta busca todos los registros de la tabla de empresa donde company_id de la tabla de empresa es igual a company_id de la tabla de elementos y el campo valor de teléfono no está vacío. Hay un registro en la tabla de la compañía que no tiene número de teléfono y este registro se omitirá de la salida.

SELECCIONE item_id, name, quantity
DE items
DONDE EXISTA (SELECCIONE 1
DE company
DONDE items.company_id = empresa.company_id y compañía.teléfono<>»);

Salida:

El registro de LG no tiene entrada de teléfono en la tabla de la compañía. Por lo tanto, no aparece en la salida.

(b) NO EXISTE

La cláusula NO EXISTE es opuesta a la cláusula EXISTE. La siguiente consulta recuperará esos registros de la tabla de elementos cuando la subconsulta devuelva false.

SELECCIONE item_id, name, quantity
DE items
DONDE NO EXISTE (SELECCIONE 1
DE company
DONDE items.company_id = empresa.company_id y compañía.website_url es NULL);

Salida:

No hay registro en la tabla de empresa donde website_url es NULL. Por lo tanto, la salida de subconsulta es falsa para todos los registros y se recuperan todos los registros de la tabla de elementos.

Ejemplo-2: Usando la cláusula EXISTS en la consulta de inserción

De acuerdo con la siguiente consulta de inserción, los datos se insertarán en la tabla items cuando company_id de las tablas empresa y clientes sean iguales.

INSERTE EN elementos
(company_id)
SELECCIONE company_id
DE clientes
DONDE EXISTA (seleccione 1
DE empresa,clientes
DONDE clientes.company_id = empresa.id de la compañía);

Salida:

Hay tres entradas para company_id en la tabla clientes con los valores 1 y 2. Por lo tanto, la subconsulta devolverá true tres veces y se insertarán tres registros.

Ejecute la consulta select para comprobar el contenido de la tabla items.

Ejemplo-3: Uso de la cláusula EXISTS en la consulta de actualización

La siguiente consulta actualizará los registros de la tabla de elementos donde company_id es 1 y la subconsulta devuelve true.

ACTUALIZAR elementos
ESTABLECER nombre = ‘Nokia’
DONDE company_id = 1 y EXISTE (SELECCIONE 1
DE elementos
DONDE name = ‘No asignar’);

Producto:

Aquí, la subconsulta devolverá true por tres veces y company_id es 1 para tres registros. Se actualizarán tres registros después de ejecutar la consulta de actualización.

Ejecute la consulta select para comprobar el contenido de la tabla items.

Ejemplo-4: Usando la cláusula EXISTS en DELETE query

La siguiente consulta eliminará los registros de la tabla de elementos donde company_id es 1 y la subconsulta devuelve true.

ELIMINAR DE elementos
DONDE company_id = 1 y EXISTE (SELECCIONE 1
DE elementos
DONDE name = ‘No asignar’);

Salida:

Hay tres registros con el valor 1 de company_id y un registro tiene el valor de nombre ‘No asignar’. Por lo tanto, la condición se cumplirá tres veces y eliminará tres registros de la tabla de elementos.

Ejecute la consulta select para comprobar el contenido de la tabla items.

Espero que tenga una idea clara de usar la cláusula EXISTS en la consulta SQL después de leer este tutorial.

Deja una respuesta

Tu dirección de correo electrónico no será publicada.