sql >> Databáze >  >> RDS >> Mysql

Světová databáze MySQL Snažíme se vyhnout poddotazu

Toto je problém „největšího počtu na skupinu“, který se na StackOverflow často vyskytuje.

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;

Vysvětlení:proveďte spojení a vyhledejte zemi c2 která má stejný kontinent a větší počet obyvatel. Pokud žádný nemůžete najít (což je indikováno tím, že vnější spojení vrací NULL pro všechny sloupce c2 ) a poté c1 musí být zemí s nejvyšším počtem obyvatel na tomto kontinentu.

Všimněte si, že toto může najít více než jednu zemi na kontinentu, pokud existuje nerozhodný výsledek pro pozici #1. Jinými slovy, mohly by existovat dvě země, pro které neexistuje žádná třetí země s větším počtem obyvatel.




  1. Jak nainstalovat, zabezpečit a vyladit výkon databázového serveru MariaDB

  2. Získejte více hodnot v SQL Server Cursor

  3. Chyba výchozí hodnoty MySQL s ON DUPLICATE KEY UPDATE

  4. Rozdíl data Oracle pro získání počtu let