В чем разница между операторами IN
и ANY
в SQL?
Разница между внутри и любыми операторами в sql
Ответ 1
SQL>
SQL> -- Use the ANY operator in a WHERE clause to compare a value with any of the values in a list.
SQL>
SQL > - Вы должны поместить оператор =, < > , <, > , <= или >= перед ЛЮБОЙ.
SQL>
SQL> SELECT *
2 FROM employee
3 WHERE salary > ANY (2000, 3000, 4000);
Для оператора
SQL> -- Use the IN operator in a WHERE clause to compare a value with any of the values in a list.
, но с помощью In вы не можете использовать =, < > , <, > , < =, или > =
Ответ 2
IN- > Равно любому в списке.
ANY- > Сравнивает значение с каждым значением, возвращаемым суб-запросом.
ALL- > Сравнивает значение с каждым значением, возвращаемым суб-запросом.
Пример:
В: (Q): отобразить подробную информацию о всех сотрудниках, чьи зарплаты соответствуют минимальным инвестициям департаментов?
(А): SQL > Выберите Ename Sal Deptno из Emp Где Sal IN (выберите Min (Sal) из группы Emp Deptno);
ANY:
Meaans меньше максимального значения в списке.
(Q): получить информацию о всех сотрудниках, которые зарабатывают меньше, чем высшее вознаграждение сотрудников, контролирующих другие ЭМП?
(А): SQL > Выбрать Empno Ename Job Sl от Emp Где Сэл
ЛЮБОЙ: → Meaans больше минимального значения в списке.
(Q): Получите подробную информацию о всех членах, которые зарабатывают больше, чем наименее заплаченные Департаментом 10?
(А): SQL > Выберите Empno Ename Job Sal из Emp Где Sal > Any (выберите Min (Sal) от Emp где Deptno 10);
ЛЮБОЙ: → Он эквивалентен оператору.
Примечание: 'Some' также используется insted из ЛЮБОГО.
Ответ 3
Возможно, для лучшего понимания эти два условия эквивалентны. Это вопрос вкуса, который вы используете (при условии, что RDBMS поддерживает их оба)
... WHERE x IN (SELECT Y FROM THE_TABLE)
... WHERE x =ANY (SELECT Y FROM THE_TABLE)
и они также
... WHERE x NOT IN (SELECT Y FROM THE_TABLE)
... WHERE x <>ALL (SELECT Y FROM THE_TABLE)
Собственно, моя личная привычка состоит в использовании IN
для выражения списка (например, WHERE x IN (2,4,6,8)
и =ANY
, соответственно <>ALL
для подзапросов.
Ответ 4
При использовании всех
SELECT empno, sal FROM emp WHERE sal > ALL (2000, 3000, 4000);
EMPNO SAL
7839 5000
Он вернет результат, эквивалентный запросу:
SELECT empno, sal FROM emp ГДЕ sal > 2000 И sal > 3000 И sal > 4000;
При использовании любого
SELECT empno, sal FROM emp WHERE sal > ANY (2000, 3000, 4000);
EMPNO SAL
7566 2975
7698 2850
7782 2450
7788 3000
7839 5000
7902 3000
Возвращает результат так же, как
SELECT empno, sal FROM emp WHERE sal > 2000 или sal > 3000 или sal > 4000;
Ответ 5
ЛЮБОЙ И ВСЕ ОПЕРАТОР В SQL SERVER 2008R2.
Используя оператоp > сравнения в качестве примера, > ALL означает больше любого значения - другими словами, больше максимального значения. Например, > ALL (1, 2, 3) означает больше 3. > ANY означает большее, чем хотя бы одно значение, то есть больше минимального. Итак > ANY (1, 2, 3) означает больше 1.
Аналогично, > ANY означает, что для строки, удовлетворяющей условию, указанному во внешнем запросе, значение в столбце, которое вводит подзапрос, должно быть больше, чем хотя бы одно из значений в списке значений, возвращаемых подзапросом.
Ответ 6
С ЛЮБОЙ, вам нужен оператор:
WHERE X > ANY (SELECT Y FROM Z)
С помощью IN вы не можете. Он всегда проверяет равенство.
Ответ 7
Операторы ANY и ALL используются с предложением WHERE или HAVING.
Оператор ANY возвращает true, если какое-либо из значений подзапроса соответствует условию.
Оператор ALL возвращает true, если все значения подзапроса удовлетворяют условию.
Ответ 8
Когда мы сравниваем любое значение столбца, используя "IN", некоторый набор, скажем, {value1,value2...}
тогда значение столбца должно присутствовать в наборе, но в случае ЛЮБОГО мы сравниваем так:
col.value > ANY ({value1,value2,...})
тогда значение должно быть больше любого из установленного значения.
в случае "ВСЕ"
col.value> ALL({value1,value2,...})
значение должно быть больше, чем все значения в наборе.
Обратитесь к следующим изображениям для лучшего понимания: