Подтвердить что ты не робот

Разница между внутри и любыми операторами в sql

В чем разница между операторами IN и ANY в SQL?

4b9b3361

Ответ 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,...})

значение должно быть больше, чем все значения в наборе.

Обратитесь к следующим изображениям для лучшего понимания: