Subconsultas SQL

Importante :  Este artigo foi traduzido por um sistema de tradução automática, leia o aviso de isenção de responsabilidade. Para sua referência, veja a versão em inglês deste artigo aqui.

Uma subconsulta é uma instrução SELECT aninhada em uma instrução SELECT, SELECT...INTO, INSERT...INTO, DELETE ou UPDATE ou em outra subconsulta.

Sintaxe

Você pode usar três formas de sintaxe ao criar uma subconsulta:

comparação [ANY | ALL | SOME] (instruçãosql)

expressão [NOT] IN (instruçãosql)

[NOT] EXISTS (instruçãosql)

Uma subconsulta apresenta estas partes:

Parte

Descrição

comparação

Uma expression e um operador de comparação que compara a expressão com os resultados da subconsulta.

expressão

Uma expressão para a qual o conjunto de resultados da subconsulta é pesquisado.

instruçãosql

Uma instrução SELECT, seguindo o mesmo formato e as mesmas regras de qualquer outra instrução SELECT. É preciso colocá-la entre parênteses.


Comentários

Você pode usar a subconsulta no lugar de uma expressão na lista de campos de uma instrução SELECT ou em uma cláusula WHERE ou HAVING. Em uma subconsulta, use a instrução SELECT para fornecer um conjunto de um ou mais valores específicos a serem avaliados na expressão da cláusula WHERE ou HAVING.

Use o predicado ANY ou SOME, que são sinônimos, para recuperar registros da consulta principal que atendam à comparação com qualquer registro recuperado na subconsulta. O exemplo a seguir retorna todos os produtos cujo preço unitário é maior do que o de qualquer produto vendido com desconto de 25% ou mais:

SELECT * FROM Products WHERE UnitPrice > ANY (SELECT UnitPrice FROM OrderDetails WHERE Discount >= .25);

Use o predicado ALL para recuperar apenas os registros da consulta principal que atendam à comparação com todos os registros recuperados na subconsulta. Se você alterasse ANY para ALL no exemplo anterior, a consulta retornaria apenas os produtos cujo preço unitário é maior do que o de todos os produtos vendidos com desconto de 25% ou mais. Isso é muito mais restritivo.

Use o predicado IN para recuperar apenas registros da consulta principal para os quais algum registro da subconsulta contém um valor igual. O exemplo a seguir retorna todos os produtos com um desconto de 25% ou mais:

SELECT * FROM Products WHERE ProductID IN (SELECT ProductID FROM OrderDetails WHERE Discount >= .25);

De maneira inversa, você pode usar NOT IN para recuperar apenas os registros da consulta principal para os quais nenhum registro da subconsulta contém um valor igual.

Use o predicado EXISTS (com a palavra reservada NOT opcional) em comparações verdadeiro/falso para determinar se a subconsulta retornará algum registro.

Você também pode usar aliases de nome de tabela em uma subconsulta para se referir a tabelas listadas em uma cláusula FROM externa à subconsulta. O exemplo a seguir retorna os nomes dos funcionários cujo salário é igual a ou maior que o salário médio de todos os funcionários tendo o mesmo cargo. A tabela Employees recebe o alias "T1":

SELECT LastName, FirstName, Title, Salary FROM Employees AS T1 WHERE Salary >= (SELECT Avg(Salary) FROM Employees WHERE T1.Title = Employees.Title) Order by Title;

No exemplo anterior, a reserved word AS é opcional.

Algumas subconsultas são permitidas em consultas de tabela de referência cruzada — especificamente, como predicados (aqueles na cláusula WHERE). Subconsultas como saída (aquelas na lista SELECT) não são permitidas em consultas de tabela de referência cruzada.



Observação : Aviso de Isenção de Tradução Automática: Este artigo foi traduzido por computador, sem intervenção humana. A Microsoft oferece essas traduções automáticas para ajudar as pessoas que não falam inglês a aproveitar os textos escritos sobre produtos, serviços e tecnologias da Microsoft. Como este artigo foi traduzido automaticamente, é possível que contenha erros de vocabulário, sintaxe ou gramática.

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar no Office Insider

Essas informações foram úteis?

Obrigado por seus comentários!

Agradecemos pelos seus comentários! Parece que pode ser útil conectar você a um de nossos agentes de suporte do Office.

×