Оператор ANY сравнивает значение первой таблицы со всеми значениями второй таблицы и возвращает строку, если есть совпадение с каким-либо значением. Например, если мы хотим найти учителей, чей возраст аналогичен возрасту любого ученика, мы можем использовать:
1 2 3 4 5 6 |
SELECT * FROM Teachers WHERE age = ANY ( SELECT age FROM Students ); |
1 2 |
SELECT age FROM Students |
возвращает все возрасты из таблицы Students. А условие:
1 |
WHERE age = ANY (...) |
сравнивает возраст учащихся (возвращается от подзапроса) с возрастом учителя. При наличии совпадения выбирается соответствующая строка таблицы Teachers.
Оператор ALL в SQL
Оператор ALL сравнивает значение первой таблицы со всеми значениями второй таблицы и возвращает строку, если есть совпадение со всеми значениями. Например, если мы хотим найти учителей, чей возраст больше, чем у всех учеников, мы можем использовать:
1 2 3 4 5 6 |
SELECT * FROM Teachers WHERE age > ALL ( SELECT age FROM Students ); |
Подзапрос:
1 2 |
SELECT age FROM Students |
возвращает все возрасты из таблицы Students. А условие:
1 |
WHERE age > ALL (...) |
сравнивает возраст учащихся (возвращается от подзапроса) с возрастом учителя. Если возраст учителя больше, чем возраст всех учеников, выбирается соответствующая строка таблицы Teachers.
Операторы ANY и ALL с операторами сравнения
Мы можем использовать любые операторы сравнения, такие как =
, >
, <
и другие, с операторами ANY
и ALL
. Давайте рассмотрим пример, когда нам нужны учителя, чей возраст меньше, чем у любого ученика.
1 2 3 4 5 6 |
SELECT * FROM Teachers WHERE age < ANY ( SELECT age FROM Students ); |
Здесь мы выбираем строки из таблицы Teachers, если возраст (age) во внешнем запросе меньше любого возраста в подзапросе.