SQL Except: What It Is and How to Use It
SQL оператор EXCEPT используется для получения набора результатов из одной таблицы, которые не присутствуют в другой таблице. Он сравнивает два набора результатов и возвращает только уникальные строки из первого набора, которые не присутствуют во втором наборе. Оператор EXCEPT относится к операторам множественной выборки в SQL, таким как UNION, INTERSECT.
Например, у нас есть два набора результатов из двух различных таблиц со следующей структурой и содержимым:
Таблица первого набора:
sql
CREATE TABLE table1 (
id INT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO table1 VALUES (1, 'John');
INSERT INTO table1 VALUES (2, 'Mary');
INSERT INTO table1 VALUES (3, 'David');
Таблица второго набора:
sql
CREATE TABLE table2 (
id INT PRIMARY KEY,
name VARCHAR(50)
);
INSERT INTO table2 VALUES (1, 'John');
INSERT INTO table2 VALUES (2, 'Mary');
Теперь мы хотим выбрать из первого набора только те строки, которые не присутствуют во втором наборе (отфильтровать общие строки):
sql
SELECT id, name FROM table1
EXCEPT
SELECT id, name FROM table2;
Результат будет иметь вид:
3, David
То есть, в результат выведется только запись с id=3 и name='David', так как она не содержится в таблице table2.
Можно также использовать оператор минус (-) вместо оператора EXCEPT:
sql
SELECT id, name FROM table1
WHERE id NOT IN (SELECT id FROM table2);
Результат будет таким же, как и с использованием оператора EXCEPT.
Оператор EXCEPT может также использоваться с несколькими таблицами:
sql
SELECT id, name FROM table1
EXCEPT
SELECT id, name FROM table2
EXCEPT
SELECT id, name FROM table3;
В этом случае результат будет содержать только те записи, которые не содержатся ни в одной из таблиц.
В целом, оператор EXCEPT полезен для фильтрации наборов данных и позволяет упростить написание запросов в SQL.