INTERSECT
Оператор INTERSECT позволяет найти общие строки для двух выборок, то есть данный оператор выполняет операцию пересечения множеств. Для его использования применяется следующий формальный синтаксис:
1 2 | SELECT_выражение1INTERSECT 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, LastNameFROM EmployeesINTERSECT SELECT FirstName, LastName FROM Customers |
