Diferença entre o in e quaisquer operadores em sql
Qual é a diferença entre IN
e ANY
operadores em SQL ?
8 answers
SQL>
SQL> -- Use the ANY operator in a WHERE clause to compare a value with any of the values in a list.
SQL>
SQL> -- você deve colocar um =, , , = operador antes de qualquer.
SQL>
SQL> SELECT *
2 FROM employee
3 WHERE salary > ANY (2000, 3000, 4000);
Para O Operador
SQL> -- Use the IN operator in a WHERE clause to compare a value with any of the values in a list.
Mas com o In você não pode usar =, , , =
IN - >igual a qualquer um na lista.
ANY - >compara o valor a cada valor devolvido pela sub-consulta.
ALL - >compara o valor a cada valor devolvido pela sub-consulta.
Por Exemplo:
Em: (Q): mostrar os detalhes de todos os empregados cujos salários estão coincidindo com menos investimentos de departamentos?
(A): SQL>seleccionar Ename Sal Deptno do Emp onde Sal IN (seleccionar Min (Sal) Do Grupo Emp pelo Deptno);
Qualquer:
Means Less Than The Valor máximo na lista.
(Q):obter os detalhes de todos os empregados que estão a ganhar menos do que o salário mais elevado que controlam outros Emp?
(A): SQL>seleccione Empno Ename Job Sl do Emp Onde Está O Sal?
Qualquer: - >Meaans superior ao valor mínimo da lista.
(Q):obter os detalhes de todos os Emps que estão ganhando mais do que o menos pago do Departamento 10?
(A): SQL>seleccionar Empno Ename Job Sal do Emp Em Que Sal>Qualquer [Seleccionar Min (Sal) Do Emp Em Que Deptno 10);
QUALQUER:->é equivalente a em Operador.
Nota: "Alguns" também são usados em qualquer.
... WHERE x IN (SELECT Y FROM THE_TABLE)
... WHERE x =ANY (SELECT Y FROM THE_TABLE)
E estes também
... WHERE x NOT IN (SELECT Y FROM THE_TABLE)
... WHERE x <>ALL (SELECT Y FROM THE_TABLE)
Na verdade, o meu hábito pessoal é usar IN
para a expressão da lista (como WHERE x IN (2,4,6,8)
e =ANY
, REP. <>ALL
para sub-consultas.
Ao usar tudo
Seleccione empno, sal De emp Em que todos (2000, 3000, 4000);
EMPNO SAL
7839 5000
Irá devolver o resultado equivalente à consulta:
Seleccione empno, sal De emp Em que sal > 2000 e sal > 3000 e sal > 4000;
Ao usar qualquer
Seleccione empno, sal De emp Em que:(2000, 3000, 4000);
EMPNO SAL
7566 2975
7698 2850
7782 2450
7788 3000
7839 5000
7902 3000
Devolve um resultado igual ao
Seleccione empno, sal De emp ONDE sal > 2000 ou sal > 3000 ou sal > 4000;
Qualquer operador no servidor SQL 2008R2.
Usando o operador de comparação > como exemplo, >tudo significa maior do que cada valor--por outras palavras, maior do que o valor máximo. Por exemplo, >ALL (1, 2, 3) significa maior que 3. >Qualquer meio maior que pelo menos um valor, ou seja, maior que o mínimo. Então > qualquer (1, 2, 3) significa maior que 1.
Similarmente, >qualquer significa que para uma linha satisfazer a condição especificada na consulta externa, o valor na coluna isso introduz o subquery deve ser maior do que pelo menos um dos valores na lista de valores retornados pela subquery.
Com qualquer um, você precisa de um operador:
WHERE X > ANY (SELECT Y FROM Z)
É sempre um teste de igualdade.
Todos os operadores são utilizados com uma cláusula de "WHERE" ou de "HAVING".
O operador qualquer devolve verdadeiro se algum dos valores da subconta satisfizer a condição.
O operador completo devolve verdadeiro se todos os valores da subconta satisfizerem a condição.
Quando estamos a comparar qualquer valor da coluna usando " In " algum conjunto diz {value1,value2 ...}
então o valor da coluna deve estar presente no conjunto, mas no caso de qualquer um que compararmos como este:
col.value > ANY ({value1,value2,...})
Então o valor deve ser maior do que qualquer um dos valores definidos.
No caso de "todos"
col.value> ALL({value1,value2,...})
O valor deve ser superior a todos os valores do conjunto.
Consulte as seguintes imagens para uma melhor compreensão:
- Este é o meu empregado da base de dados.
- toda a pesquisa
- qualquer pesquisa
- na pesquisa