Разница между операторами ANY и ALL в PostgreSQL заключается в том, как они работают при сравнении значений:
- ANY позволяет сравнить значение с любым элементом в массиве. 3 Результатом будет «true», если хотя бы для одной строки условие истинно, и «false» в противном случае (в том числе, когда подзапрос не возвращает строк). 1
- ALL используется, когда нужно сравнить значение со всеми элементами в массиве. 3 Результатом будет «true», если условие истинно для всех строк (или если подзапрос не возвращает строк), или «false», если находятся строки, для которых оно ложно. 1
Ещё одно различие заключается в поведении, когда подзапрос не возвращает никаких значений: в такой ситуации ALL автоматически верен, а ANY автоматически неправилен. 4