EXCEPT

Последнее обновление: 30.11.2021

Оператор EXCEPT позволяет найти разность двух выборок, то есть те строки которые есть в первой выборке, но которых нет во второй. Для его использования применяется следующий формальный синтаксис:

SELECT_выражение1
EXCEPT 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);

Таблица employees содержит данные обо всех сотрудниках банка, а таблица clients - обо всех клиентах. Но сотрудники банка могут также быть его клиентами. И допустим, нам надо найти всех клиентов банка, которые не являются его сотрудниками:

SELECT name, age
FROM clients
EXCEPT SELECT name, age 
FROM employees;
Разность выборок и оператор EXCEPT в SQLite

Подобным образом можно получить всех сотрудников банка, которые не являются его клиентами:

SELECT name, age
FROM employees
EXCEPT SELECT name, age 
FROM clients;
Разность множеств и EXCEPT в SQLite
Помощь сайту
Юмани:
410011174743222
Перевод на карту
Номер карты:
4048415020898850