Como fazer subconsultas dentro de SELECT?

Subconsultas dentro de SELECT no SQL permitem recuperar informações dinamicamente em tempo de execução, trazendo mais flexibilidade para consultas.

Como fazer subconsultas dentro de SELECT?

As subconsultas dentro de SELECT são usadas para recuperar informações de outra tabela ou cálculo e exibi-las como parte dos resultados de uma consulta principal.

Exemplo de subconsulta dentro de SELECT

Se quisermos exibir o preço médio de cada categoria junto com cada produto:

SELECT nome, preco, 
  (SELECT AVG(preco) FROM produtos p2 WHERE p2.categoria = p1.categoria) AS media_preco_categoria 
FROM produtos p1;

Aqui, a subconsulta calcula a média de preço de produtos dentro da mesma categoria.

Usando subconsulta para obter a data do último pedido de cada cliente

SELECT nome, 
  (SELECT MAX(data_pedido) FROM pedidos p WHERE p.cliente_id = c.id) AS ultimo_pedido 
FROM clientes c;

Essa consulta retorna o nome do cliente e a data do último pedido que ele realizou.

Quando usar subconsultas dentro de SELECT?

  • Para recuperar valores agregados relacionados a cada linha da consulta principal.
  • Quando não há uma relação direta entre as tabelas, mas um cálculo precisa ser feito para cada registro.
  • Para evitar JOINs excessivos que possam comprometer a performance da consulta.

Cuidados ao usar subconsultas dentro de SELECT

  • Podem ser menos eficientes do que JOINs, pois a subconsulta é executada para cada linha da consulta principal.
  • Evite usar subconsultas em grandes volumes de dados, pois podem gerar processamento excessivo.
  • Sempre verifique se um JOIN não seria mais eficiente antes de optar por uma subconsulta.

As subconsultas dentro de SELECT são extremamente úteis quando precisamos buscar informações complementares de maneira dinâmica. Em um sistema de vendas, podemos usá-las para exibir o último pedido feito por cada cliente sem a necessidade de um JOIN complexo. Em um banco de dados financeiro, podemos calcular a média de transações de um usuário e exibi-la junto com cada uma de suas compras. No entanto, é importante testar a performance da consulta e avaliar se um JOIN não seria uma alternativa mais eficiente.

Algumas aplicações:

  • Calcular a média de valores por categoria dinamicamente
  • Buscar a última transação realizada por cada cliente
  • Exibir o maior pedido feito em cada região
  • Comparar o preço de um produto com a média do mercado
  • Obter informações complementares sem usar JOINs complexos

Dicas para quem está começando

  • Evite usar subconsultas quando um JOIN pode resolver o problema
  • Teste a performance da consulta em tabelas grandes antes de aplicá-la
  • Se a subconsulta retornar múltiplos valores, utilize LIMIT 1 para restringir o resultado
  • Para cálculos complexos, considere usar WITH para criar consultas temporárias
  • Analise o impacto da subconsulta utilizando EXPLAIN para entender sua execução

Contribuições de Fernando Albuquerque

Compartilhe este tutorial: Como fazer subconsultas dentro de SELECT?

Compartilhe este tutorial

Continue aprendendo:

Como calcular a média de valores agrupados no SQL?

Podemos calcular a média de valores agrupados no SQL utilizando a função AVG() junto com GROUP BY para segmentar os dados.

Tutorial anterior

Como usar uma subconsulta dentro de um WHERE?

Subconsultas dentro do WHERE no SQL permitem filtrar registros dinamicamente com base nos resultados de outra consulta.

Próximo tutorial