Задача исключения набора строк из выборки является типовой для разработчика.
Обычно применяют:
NOT IN;NOT EXISTS;- внешнее соединение с проверкой на
NULLзначения столбца, имеющим ограничениеNOT NULL; EXCEPT(MINUSв СУБД Oracle и MySQL).
Рассмотрим оператор исключения строк EXCEPT. После применения EXCEPT в результате останутся строки из первого запроса, которых нет во втором запросе.
Пример:
SELECT *
FROM table1
| value |
|---|
| 1 |
| 3 |
| 5 |
SELECT *
FROM table2
| value |
|---|
| 2 |
| 3 |
| 4 |
SELECT value
FROM table1
EXCEPT
SELECT value
FROM table2
| # | value |
|---|---|
| 1 | 1 |
| 2 | 5 |