sql >> Databasteknik >  >> RDS >> Mysql

MySQL världsdatabas Försöker undvika subquery

Detta är det "största-n-per-grupp"-problemet som dyker upp ofta på 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;

Förklaring:gör en join och leta efter ett land c2 som har samma kontinent och en större befolkning. Om du inte kan hitta en (vilket indikeras av att den yttre sammanfogningen returnerar NULL för alla kolumner i c2 ) sedan c1 måste vara det land med den högsta befolkningen på den kontinenten.

Observera att detta kan hitta mer än ett land per kontinent, om det är oavgjort för #1-positionen. Med andra ord kan det finnas två länder för vilka det inte finns något tredje land med en större befolkning.




  1. PHP hur man sparar HTML-sträng i databasen

  2. Sammanfogningstabell med delsträngsvillkor

  3. MySQL-fel:Värde utanför intervallet för kolumn "belopp" på rad 1

  4. Microsoft Access memo datatyp till MySQL Datatype