Iniciar sessão com a Microsoft
Iniciar sessão ou criar uma conta.
Olá,
Selecione uma conta diferente.
Tem várias contas
Selecione a conta com a qual pretende iniciar sessão.

Uma subconsulta é uma instrução SELECT aninhada dentro de um SELECT, SELECT... INTO, INSERT... Instrução INTO, DELETE ou UPDATE ou dentro de outra subconsulta.

Sintaxe

Pode utilizar três formas de sintaxe para criar uma subconsulta:

comparação [ANY | TUDO | ALGUNS] (sqlstatement)

expression [NOT] IN (sqlstatement)

[NÃO] EXISTS (sqlstatement)

Uma subconsulta tem as seguintes partes:

Parte

Descrição

comparação

Uma expressão 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 regras que qualquer outra instrução SELECT. Tem de estar entre parênteses.


Observações

Pode utilizar uma subconsulta em vez de uma expressão na lista de campos de uma instrução SELECT ou numa cláusula WHERE ou HAVING. Numa subconsulta, utilize uma instrução SELECT para fornecer um conjunto de um ou mais valores específicos a avaliar na expressão da cláusula WHERE ou HAVING.

Utilize o predicado ANY ou SOME, que são sinónimos, para obter registos na consulta principal que satisfaçam a comparação com quaisquer registos obtidos na subconsulta. O exemplo seguinte devolve todos os produtos cujo preço unitário é superior ao de qualquer produto vendido com um desconto de 25% ou mais:

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

Utilize o predicado ALL para obter apenas os registos na consulta principal que satisfazem a comparação com todos os registos obtidos na subconsulta. Se alterou ANY para ALL no exemplo anterior, a consulta devolveria apenas os produtos cujo preço unitário é maior do que o de todos os produtos vendidos com um desconto de 25% ou mais. Isto é muito mais restritivo.

Utilize o predicado IN para obter apenas esses registos na consulta principal para a qual algum registo na subconsulta contém um valor igual. O exemplo seguinte devolve todos os produtos com um desconto de 25% ou mais:

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

Por outro lado, pode utilizar NOT IN para obter apenas esses registos na consulta principal para a qual nenhum registo na subconsulta contém um valor igual.

Utilize o predicado EXISTS (com a palavra opcional NÃO reservada) em comparações verdadeiras/falsas para determinar se a subconsulta devolve registos.

Também pode utilizar aliases de nome de tabela numa subconsulta para fazer referência a tabelas listadas numa cláusula FROM fora da subconsulta. O exemplo seguinte devolve os nomes dos colaboradores cujos salários são iguais ou superiores ao salário médio de todos os colaboradores com o mesmo cargo. A tabela Funcionários 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, o palavra reservada AS é opcional.

Algumas subconsultas são permitidas em consultas cruzadas , especificamente, como predicados (os da cláusula WHERE). As subconsultas como saída (as da lista SELECT) não são permitidas em consultas cruzadas.



Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.

Estas informações foram úteis?

Quão satisfeito está com a qualidade do idioma?
O que afetou a sua experiência?
Ao selecionar submeter, o seu feedback será utilizado para melhorar os produtos e serviços da Microsoft. O seu administrador de TI poderá recolher estes dados. Declaração de Privacidade.

Obrigado pelo seu feedback!

×