SQL-запрос для исключения записей, если они совпадают с записью в другой таблице
В этой статье мы увидим, как написать SQL-запрос для исключения записей, если он соответствует записи в другой таблице. Мы можем выполнить вышеуказанную функцию, используя оператор NOT IN в SQL. Для получения списка значений мы можем написать подзапрос.
Оператор NOT IN действует как отрицание оператора In и возвращает результаты, за исключением элементов, присутствующих в указанном списке.
Синтаксис: НЕ В
SELECT * FROM table_name WHERE column_name NOT IN (list);
Теперь для демонстрации выполните следующие шаги:
Шаг 1: Создайте базу данных
мы можем использовать следующую команду для создания базы данных с именем geeks.
Запрос:
CREATE DATABASE geeks;
Шаг 2: Используйте базу данных
Используйте приведенный ниже оператор SQL, чтобы переключить контекст базы данных на гиков:
Запрос:
USE geeks;
Шаг 3: Определение таблицы
У нас есть две таблицы с именами «demo_table1» и «demo_table2» в нашей компьютерной базе данных.
Запрос (демо_таблица1):
CREATE TABLE demo_table1( NAME VARCHAR(20), AGE INT, CITY VARCHAR(20) );
Запрос (демо_таблица2):
CREATE TABLE demo_table2( NAME VARCHAR(20), AGE int);
Шаг 4: Вставьте данные в таблицу
Запрос (демо_таблица1):
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");
Запрос (демо_таблица2):
INSERT INTO demo_table2 VALUES ("Fanny",25 ), ("Prem", 30), ("Preeti",21), ("Samita",32), ("Rahul",23), ("Ranvir",23);
Шаг 5. Просмотрите содержимое
Выполните приведенный ниже запрос, чтобы просмотреть содержимое таблицы.
Запрос:
SELECT * FROM demo_table1;
Выход:
Запрос:
SELECT * FROM demo_table2;
Выход:
Шаг 6: Исключите данные из demo_table1 на основе совпадений, найденных в demo_table2
Для демонстрации исключите данные из demo_table1, значения которых в столбце NAME соответствуют записям в столбце Name в demo_table2.
Запрос:
SELECT * FROM demo_table1 WHERE NAME NOT IN (SELECT NAME FROM demo_table2);
Выход:
На изображении мы видим, что две записи исключены, поскольку значения совпадают с записью в demo_table2.
Альтернативный метод:
В качестве альтернативы, чтобы исключить строки из demo_table1, чьи значения в столбце NAME соответствуют строкам в столбце NAME в demo_table2, мы можем выполнить это с левым соединением.
Как мы знаем, левое соединение возвращает все строки в левой таблице и соответствует только строкам в правой таблице, поэтому значения правого столбца таблицы будут NULL, если в них нет совпадающих строк. Следовательно, мы будем использовать эту концепцию левого соединения с условием, что значение столбца правой таблицы равно нулю.
Запрос вышеуказанного контента с использованием левого соединения и условия:
select t1.* from demo_table1 t1 left join demo_table2 t2 on t1.name = t2.name where t2.name is null
Это возвращает требуемый набор данных.