в вашем первом запросе внутри подзапроса
SELECT department_id
FROM
employees
WHERE
department_id IS NULL
Он не возвращает никаких department_id
, поэтому ваш вывод будет нулевым
Оператор in
сделает col = val1 илиcol = val2 или col = val3.Помещение нуля туда приведет к col = null, который не будет работать
, в результате в случае оператора in
это хорошо отфильтровать ноль
SELECT department_id
FROM
employees
WHERE
department_id IS not NULL --filter out null
В вашем2-й запрос
SELECT
department_id,
department_name
FROM
departments
WHERE
department_id NOT IN ( --why -> IN... IS NULL is not working?
SELECT
department_id
FROM
employees
WHERE
department_id IS NOT NULL -- null checking is good
)
ORDER BY
department_name;
в подзапросе, который вы отметили. ГДЕ департамент НЕ НЕДЕЙСТВИТЕЛЕН, что защищает вас от выполнения типа col = null, и эти department_id
возврат в подзапросе будут отфильтрованы