Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Banco de dados mundial MySQL Tentando evitar a subconsulta


Este é o problema do "maior n por grupo" que aparece com frequência no StackOverflow.
SELECT c1.Continent, c1.Name
FROM Country c1
LEFT OUTER JOIN Country c2
  ON (c1.continent = c2.continent AND c1.Population < c2.Population)
WHERE c2.continent IS NULL;

Explicação:faça um join procurando um país c2 que tem o mesmo continente e uma população maior. Se você não encontrar um (o que é indicado pela junção externa retornando NULL para todas as colunas de c2 ) então c1 deve ser o país com a maior população daquele continente.

Observe que isso pode encontrar mais de um país por continente, se houver empate na posição #1. Em outras palavras, poderia haver dois países para os quais não existe um terceiro país com uma população maior.