Consulta SQL para excluir registros si coincide con una entrada en otra tabla

En este artículo, veremos cómo escribir la consulta SQL para excluir registros si coincide con una entrada en otra tabla. Podemos realizar la función anterior usando el operador NOT IN en SQL. Para obtener la lista de valores podemos escribir la subconsulta.

Los operadores NOT IN actúan como una negación del operador In y devuelven los resultados excluyendo los elementos presentes en la lista especificada.

Sintaxis: NO EN 

SELECT * FROM table_name WHERE column_name NOT IN (list);

Ahora, para la demostración, siga los pasos a continuación:

Paso 1: Crear una base de datos

podemos usar el siguiente comando para crear una base de datos llamada geeks.

Consulta:

CREATE DATABASE geeks;

Paso 2: Usa la base de datos

Use la siguiente instrucción SQL para cambiar el contexto de la base de datos a geeks:

Consulta:

USE geeks;

Paso 3: definición de la tabla

Tenemos dos tablas llamadas ‘demo_table1’ y ‘demo_table2’ en la base de datos de nuestro geek.

Consulta (demo_table1):

CREATE TABLE demo_table1(
NAME VARCHAR(20),
AGE INT,
CITY VARCHAR(20) );

Consulta (demo_table2):

CREATE TABLE demo_table2(
NAME VARCHAR(20),
AGE int);

Paso 4: Insertar datos en una tabla

Consulta (demo_table1):

INSERT INTO demo_table1 VALUES
('Romy',23,'Delhi'),
('Rahul',23,'Delhi'),
('Nikhil',24,'Punjab'),
('Ranvir',23,'Punjab'),
('Samiksha',23,'Banglore'),
('Ashtha',24,'Banglore'),
('Tannu',30,'Patna'),
('Girish',30,'Patna'),
('Ram', 20 , 'Patna'),
('Raj', 12, 'Delhi');

Consulta (demo_table2):

INSERT INTO demo_table2 VALUES
('Fanny',25 ),
('Prem', 30), 
('Preeti',21),
('Samita',32),
('Rahul',23),
('Ranvir',23);

Paso 5: Ver el contenido

Ejecute la siguiente consulta para ver el contenido de la tabla

Consulta:

SELECT * FROM demo_table1;

Producción:

Consulta:

SELECT * FROM demo_table2;

Producción:

Paso 6: Excluir datos de demo_table1 según las coincidencias encontradas en demo_table2

Para la demostración, excluya los datos de demo_table1 cuyos valores en la columna NOMBRE coincidan con las entradas en la columna Nombre de demo_table2.

Consulta:

SELECT * FROM demo_table1 WHERE NAME NOT IN (SELECT NAME FROM demo_table2);

Producción:

Podemos ver en la imagen que se excluyen dos entradas ya que los valores coinciden con la entrada en demo_table2.

Metodo alternativo:

Alternativamente, para excluir filas de demo_table1 cuyos valores en la columna NOMBRE coincidan con las filas en la columna NOMBRE en demo_table2, podemos hacerlo con combinación izquierda.

Como sabemos, la combinación izquierda devuelve todas las filas de la tabla izquierda y solo coincide con las filas de la tabla derecha, por lo que los valores de la columna de la tabla derecha serán NULOS si no tienen filas coincidentes. Por lo tanto, utilizaremos este concepto de combinación izquierda con la condición de que el valor de la columna de la tabla derecha sea nulo.

La consulta del contenido anterior usando Left Join y Condition:

select  t1.* from demo_table1 t1 left join demo_table2 t2 on t1.name = t2.name where t2.name is null

Esto devuelve el conjunto de datos requerido.

Publicación traducida automáticamente

Artículo escrito por romy421kumari y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

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