Tutorial SQL

SQL INÍCIO Introdução SQL Sintaxe SQL Seleção SQL SQL Select Distinto SQL Onde SQL E, Ou, Não Ordem SQL por SQL Inserir em Valores Nulos SQL Atualização SQL Excluir SQL SQL Select Top SQL Mínimo e Máximo Contagem SQL, Média, Soma Como SQL Curingas SQL Entrada SQL SQL entre Alias ​​SQL Junções SQL SQL Inner Join SQL Left Join Associação à direita do SQL Associação completa SQL Auto-junção SQL União SQL SQL Agrupar por SQL tendo SQL existe SQL Qualquer, Todos SQL Selecionar em SQL Inserir na seleção Caso SQL Funções Nulas SQL Procedimentos armazenados SQL Comentários SQL Operadores SQL

Banco de dados SQL

SQL Criar banco de dados SQL Drop DB Banco de dados de backup SQL SQL Criar Tabela Tabela de descarte de SQL Tabela de alteração SQL Restrições SQL SQL não nulo SQL exclusivo Chave Primária SQL Chave estrangeira SQL Verificação SQL Padrão SQL Índice SQL Incremento automático de SQL Datas SQL Visualizações SQL Injeção SQL Hospedagem SQL Tipos de dados SQL

Referências SQL

Palavras-chave SQL Funções do MySQL Funções do SQL Server Funções de acesso MS Referência Rápida SQL

Exemplos SQL

Exemplos SQL Teste SQL Exercícios de SQL Certificado SQL

Operadores SQL ANY e ALL


Os operadores SQL ANY e ALL

Os operadores ANYe ALLpermitem que você execute uma comparação entre um valor de coluna única e um intervalo de outros valores.


O operador SQL ANY

O ANYoperador:

  • retorna um valor booleano como resultado
  • retorna TRUE se QUALQUER um dos valores da subconsulta atender à condição

ANY significa que a condição será verdadeira se a operação for verdadeira para qualquer um dos valores no intervalo.

QUALQUER Sintaxe

SELECT column_name(s)
FROM table_name
WHERE column_name operator ANY
  (SELECT column_name
 
FROM table_name
 
WHERE condition);

Observação: o operador deve ser um operador de comparação padrão (=, <>, !=, >, >=, < ou <=).


O operador SQL ALL

O ALLoperador:

  • retorna um valor booleano como resultado
  • retorna TRUE se TODOS os valores da subconsulta atenderem à condição
  • é usado com SELECT, WHEREe HAVINGinstruções

ALL significa que a condição será verdadeira somente se a operação for verdadeira para todos os valores no intervalo. 

Sintaxe ALL com SELECT

SELECT ALL column_name(s)
FROM table_name
WHERE condition;

ALL Sintaxe com WHERE ou HAVING

SELECT column_name(s)
FROM table_name
WHERE column_name operator ALL
  (SELECT column_name
 
FROM table_name
 
WHERE condition);

Observação: o operador deve ser um operador de comparação padrão (=, <>, !=, >, >=, < ou <=).


Banco de dados de demonstração

Abaixo está uma seleção da tabela "Produtos" no banco de dados de exemplo Northwind:

ProductID ProductName SupplierID CategoryID Unit Price
1 Chais 1 1 10 boxes x 20 bags 18
2 Chang 1 1 24 - 12 oz bottles 19
3 Aniseed Syrup 1 2 12 - 550 ml bottles 10
4 Chef Anton's Cajun Seasoning 2 2 48 - 6 oz jars 22
5 Chef Anton's Gumbo Mix 2 2 36 boxes 21.35
6 Grandma's Boysenberry Spread 3 2 12 - 8 oz jars 25
7 Uncle Bob's Organic Dried Pears 3 7 12 - 1 lb pkgs. 30
8 Northwoods Cranberry Sauce 3 2 12 - 12 oz jars 40
9 Mishi Kobe Niku 4 6 18 - 500 g pkgs. 97

E uma seleção da tabela "OrderDetails" :

OrderDetailID OrderID ProductID Quantity
1 10248 11 12
2 10248 42 10
3 10248 72 5
4 10249 14 9
5 10249 51 40
6 10250 41 10
7 10250 51 35
8 10250 65 15
9 10251 22 6
10 10251 57 15


Exemplos SQL ANY

A instrução SQL a seguir lista o ProductName se encontrar QUALQUER registro na tabela OrderDetails com Quantidade igual a 10 (isso retornará TRUE porque a coluna Quantidade tem alguns valores de 10):

Exemplo

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);

A instrução SQL a seguir lista o ProductName se encontrar QUALQUER registro na tabela OrderDetails com Quantity maior que 99 (isso retornará TRUE porque a coluna Quantity tem alguns valores maiores que 99):

Exemplo

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 99);

A instrução SQL a seguir lista o ProductName se encontrar QUALQUER registro na tabela OrderDetails com Quantity maior que 1000 (isso retornará FALSE porque a coluna Quantity não possui valores maiores que 1000):

Exemplo

SELECT ProductName
FROM Products
WHERE ProductID = ANY
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity > 1000);

SQL TODOS Exemplos

A seguinte instrução SQL lista TODOS os nomes de produtos:

Exemplo

SELECT ALL ProductName
FROM Products
WHERE TRUE;

A instrução SQL a seguir lista o ProductName se TODOS os registros na tabela OrderDetails tiverem Quantity igual a 10. Isso obviamente retornará FALSE porque a coluna Quantity tem muitos valores diferentes (não apenas o valor de 10):

Exemplo

SELECT ProductName
FROM Products
WHERE ProductID = ALL
  (SELECT ProductID
  FROM OrderDetails
  WHERE Quantity = 10);