Skip to main content

Що робить NOT IN?

NOT IN - це оператор, який виключає рядки, якщо значення стовпця входить до вказаного списку. Він протилежний до IN.

Як працює

NOT IN перевіряє, що значення не збігається з жодним елементом зі списку. Якщо хоча б один збіг знайдено - рядок виключається з результату.

sql
SELECT * FROM employees WHERE department NOT IN ('HR', 'Finance', 'Legal');

Цей запит обере всіх співробітників, окрім тих, хто працює у відділах HR, Finance чи Legal.

Те саме без NOT IN

Без нього довелося б писати:

sql
WHERE department <> 'HR' AND department <> 'Finance' AND department <> 'Legal'

NOT IN робить те саме, але простіше і читабельніше.

Можна використовувати з підзапитом

sql
SELECT * FROM customers WHERE id NOT IN (SELECT customer_id FROM blacklist);

Обере всіх клієнтів, яких немає в таблиці blacklist.

Важливо

Якщо у списку NOT IN трапляється значення NULL, результат може виявитися порожнім, тому що SQL не знає, чи вважати NULL збігом. Щоб уникнути цього, перед фільтрацією варто виключити NULL з підзапиту:

sql
WHERE id NOT IN (SELECT customer_id FROM blacklist WHERE customer_id IS NOT NULL);

Підсумок: NOT IN - фільтрує дані, прибираючи всі рядки, значення яких входять до вказаного списку. Використовується для винятків і "чорних списків" у запитах.

Коротка відповідь

Для співбесіди
Premium

Коротка відповідь допоможе вам впевнено відповідати на цю тему під час співбесіди.