Оператор NOT IN в PostgreSQL возвращает «true», если значение левого выражения не равно ни одному из значений выражений в правой части. 1 Если найдено хотя бы одно равное значение, то результат будет «false». 2
Оператор ANY в PostgreSQL позволяет вычислить истинность указанного оператора хотя бы для какой-то строки вложенной выборки. 3 Вычисленное значение левого выражения сравнивается с каждым элементом массива с применением заданного оператора условия, который должен выдавать логическое значение. 1 Результатом ANY будет «true», если для какого-либо элемента условие истинно, и «false» в противном случае (в том числе, когда массив оказывается пустым). 1
Таким образом, основное отличие в том, что оператор NOT IN проверяет, что значение не равно ни одному из значений, а оператор ANY — что условие истинно хотя бы для какой-то строки. 12