Що робить NOT IN?
NOT IN - це оператор, який виключає рядки, якщо значення стовпця входить до вказаного списку.
Він протилежний до IN.
Як працює
NOT IN перевіряє, що значення не збігається з жодним елементом зі списку.
Якщо хоча б один збіг знайдено - рядок виключається з результату.
SELECT *
FROM employees
WHERE department NOT IN ('HR', 'Finance', 'Legal');Цей запит обере всіх співробітників, окрім тих, хто працює у відділах HR, Finance чи Legal.
Те саме без NOT IN
Без нього довелося б писати:
WHERE department <> 'HR'
AND department <> 'Finance'
AND department <> 'Legal'NOT IN робить те саме, але простіше і читабельніше.
Можна використовувати з підзапитом
SELECT *
FROM customers
WHERE id NOT IN (SELECT customer_id FROM blacklist);Обере всіх клієнтів, яких немає в таблиці blacklist.
Важливо
Якщо у списку NOT IN трапляється значення NULL,
результат може виявитися порожнім, тому що SQL не знає, чи вважати NULL збігом.
Щоб уникнути цього, перед фільтрацією варто виключити NULL з підзапиту:
WHERE id NOT IN (SELECT customer_id FROM blacklist WHERE customer_id IS NOT NULL);Підсумок:
NOT IN - фільтрує дані, прибираючи всі рядки, значення яких входять до вказаного списку.
Використовується для винятків і "чорних списків" у запитах.
Коротка відповідь
Для співбесідиКоротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.