|
Outra maneira de verificar os dados é usar os comandos ANY e ALL.
Esses comandos não são usados com frequência, mas é bom saber caso você encontre algum código que os use.
SQL ALL Comparação
A comparação SQL ALL é usada para verificar se uma expressão corresponde a todos os valores em uma lista.
Pode ser usado com qualquer um dos operadores básicos: =, <>, >, <, >=, <=.
Se parece com isso:
WHERE expressão = ALL (valores)
Internamente, essa expressão é traduzida em várias cláusulas WHERE usando a palavra-chave AND.
Então, uma consulta como esta:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name = ALL ('John', 'Mary', 'Susan', 'Mark')
É o mesmo que esta consulta:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name = 'John'
AND first_name = 'Mary'
AND first_name = 'Susan'
AND first_name = 'Mark';
Agora, olhando para essa consulta, não há como um primeiro nome ser igual a todos esses valores.
Portanto, esta consulta não retornaria resultados.
Mas a palavra-chave ALL talvez seja melhor usada com outro operador.
Por exemplo:
SELECT id
, first_name
, last_name
FROM customer
WHERE id > ALL (3, 8, 15);
Isso é o mesmo que esta consulta:
SELECT id
, first_name
, last_name
FROM customer
WHERE id > 3
AND id > 8
AND id > 15;
Usando ALL, o critério só precisa verificar o valor mínimo ou máximo.
Neste exemplo, se um id for maior que 15, ele é maior que 3 e 8, então as verificações de 3 e 8 não são necessárias.
A consulta poderia ser escrita como:
SELECT id
, first_name
, last_name
FROM customer
WHERE id > 15;
Mas é assim que você usa o operador ALL.
Pelo que vi, não é usado com muita frequência, mas é bom saber o que é.
SQL ANY Comparação
A comparação SQL ANY é semelhante a ALL.
É usado para verificar se uma expressão corresponde a todos os valores em uma lista.
Pode ser usado com qualquer um dos operadores básicos: =, <>, >, <, >=, <=.
Se parece com isso:
WHERE expressão = ANY (valores)
Internamente, essa expressão é traduzida em várias cláusulas WHERE usando a palavra-chave OR (o operador ALL usou a palavra-chave AND).
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name = ANY ('John', 'Mary', 'Susan', 'Mark');
É o mesmo que esta consulta:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name = 'John'
OR first_name = 'Mary'
OR first_name = 'Susan'
OR first_name = 'Mark';
Também pode ser escrito como uma consulta IN:
SELECT id
, first_name
, last_name
FROM customer
WHERE first_name IN ('John', 'Mary', 'Susan', 'Mark');
Se você usar outro operador, como menor que, a palavra-chave ANY pode ter esta aparência:
SELECT id
, first_name
, last_name
FROM customer
WHERE id < ANY (4, 9, 16);
Isso também pode ser escrito assim:
SELECT id
, first_name
, last_name
FROM customer
WHERE id < 4
OR id < 9
OR id < 16;
Como um valor menor que 4 também é menor que 9 e 16, eles podem ser removidos.
Esta consulta retornará os mesmos resultados:
SELECT id
, first_name
, last_name
FROM customer
WHERE id < 4;
Resumo de ALL e ANY
Os resultados de diferentes combinações de ANY e ALL podem ser resumidos da seguinte forma:
| Critério |
Resultado |
| = ALL () |
O valor deve corresponder a todos os valores na lista. |
| <> ALL () |
O valor não deve corresponder a nenhum dos valores na lista. |
| > ALL () |
O valor deve ser maior que o maior valor na lista. |
| < ALL () |
O valor deve ser menor que o menor valor na lista. |
| >= ALL () |
O valor deve ser maior ou igual ao maior valor na lista. |
| <= ALL () |
O valor deve ser menor ou igual ao menor valor na lista. |
| = ANY () |
O valor deve corresponder a um ou mais valores na lista. |
| <> ANY () |
O valor não deve corresponder a um ou mais valores na lista. |
| > ANY () |
O valor deve ser maior que o menor valor na lista. |
| < ANY () |
O valor deve ser menor que o maior valor na lista. |
| >= ANY () |
O valor deve ser maior ou igual ao menor valor na lista. |
| <= ANY () |
O valor deve ser menor ou igual ao maior valor na lista. |
Como mencionado anteriormente, você provavelmente não achará necessário usar essa sintaxe com muita frequência, mas é bom saber que ela existe.
Mais Informações
Aqui estão mais alguns artigos sobre ANY e ALL:
Copyright de Ben Brumm - DatabaseStar
|