sql >> Base de Datos >  >> RDS >> Mysql

Base de datos mundial MySQL Tratando de evitar la subconsulta

Este es el problema "mayor n-por-grupo" que surge con frecuencia en 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;

Explicación:haz una unión buscando un país c2 que tiene el mismo continente y una mayor población. Si no puede encontrar uno (que se indica mediante la combinación externa que devuelve NULL para todas las columnas de c2 ) luego c1 debe ser el país con mayor población de ese continente.

Tenga en cuenta que esto puede encontrar más de un país por continente, si hay un empate en la posición n.º 1. Es decir, podría haber dos países para los que no exista un tercer país con mayor población.