INTERSECT
Оператор INTERSECT позволяет найти общие строки для двух выборок, то есть данный оператор выполняет операцию пересечения множеств. Для его использования применяется следующий формальный синтаксис:
1 2 | SELECT_выражение1 INTERSECT SELECT_выражение2 |
Для примера возьмем таблицы из прошлой темы:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | USE usersdb; CREATE TABLE Customers ( Id INT IDENTITY PRIMARY KEY , FirstName NVARCHAR(20) NOT NULL , LastName NVARCHAR(20) NOT NULL , AccountSum MONEY ); CREATE TABLE Employees ( Id INT IDENTITY PRIMARY KEY , FirstName NVARCHAR(20) NOT NULL , LastName NVARCHAR(20) NOT NULL , ); INSERT INTO Customers VALUES ( 'Tom' , 'Smith' , 2000), ( 'Sam' , 'Brown' , 3000), ( 'Mark' , 'Adams' , 2500), ( 'Paul' , 'Ins' , 4200), ( 'John' , 'Smith' , 2800), ( 'Tim' , 'Cook' , 2800) INSERT INTO Employees VALUES ( 'Homer' , 'Simpson' ), ( 'Tom' , 'Smith' ), ( 'Mark' , 'Adams' ), ( 'Nick' , 'Svensson' ) |
В таблице Customers хранятся все клиенты банка, а в таблице Employees - все его сотрудники. Но сотрудники могут быть одновременно и клиентами банка, поэтому их данные могут храниться сразу в двух таблицах. Найдем всех сотрудников банка, которые одновременно являются его клиентами. То есть нам надо найти общие элементы двух выборок:
1 2 3 4 | SELECT FirstName, LastName FROM Employees INTERSECT SELECT FirstName, LastName FROM Customers |