Я прочитал много ответов, связанных с этим, и все говорят, что оба работают почти одинаково, за исключением случаев с нулевыми значениями, а не в работах для одного столбца.
Задача состоит в том, чтобы найти каждый номер счета который никогда не был назначен ни одной позиции в таблице invoice_line_items:
Правильный запрос:
SELECT
account_number, account_description
FROM
general_ledger_accounts gl
WHERE
NOT EXISTS( SELECT
account_number
FROM
invoice_line_items
WHERE
gl.account_number = account_number);
И если я удаляю gl.account_number = account_number, он возвращает ноль строк.
Я хочу знать: 1) Почему в подзапросе требуется оператор gl.account_number = account_number.
2) Чем отличается процесс выбора в Not In и Not Exists.