Оператор INTERSECT позволяет найти общие строки для двух выборок, то есть данный оператор выполняет операцию пересечения множеств. Для его использования применяется следующий формальный синтаксис:
SELECT_выражение1 INTERSECT SELECT_выражение2
Для примера возьмем таблицы из прошлой темы:
DROP TABLE IF EXISTS clients; DROP TABLE IF EXISTS employees; CREATE TABLE clients ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER, account_sum INTEGER NOT NULL ); CREATE TABLE employees ( id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT NOT NULL, age INTEGER ); INSERT INTO clients(name, age, account_sum) VALUES ('Tom', 37, 4000), ('Sam', 25, 3000), ('Mark', 29, 3500), ('Bob', 41, 2500), ('Adam', 28, 2900), ('Tim', 34, 4100); INSERT INTO employees(name, age) VALUES ('Tom', 37), ('Nick', 25), ('Mark', 29), ('Bob', 41), ('Alice', 31);
В таблице clients хранятся все клиенты банка, а в таблице employees - все его сотрудники. Но сотрудники могут быть одновременно и клиентами банка, поэтому их данные могут храниться сразу в двух таблицах. Найдем всех сотрудников банка, которые одновременно являются его клиентами. То есть нам надо найти общие элементы двух выборок:
SELECT name, age FROM employees INTERSECT SELECT name, age FROM clients;