sql >> Database teknologi >  >> RDS >> Mysql

MySQL:Vælg N rækker, men med kun unikke værdier i én kolonne

Sandsynligvis ikke den mest elegante af løsninger, og ydeevnen af ​​IN kan lide på større borde.

Den indlejrede forespørgsel får minimum Birthyear for hver by. Kun poster, der har dette Birthyear matches i den ydre forespørgsel. Ved at bestille efter alder og derefter begrænse til 3 resultater får du de 3 ældste personer, som også er de ældste i deres by (Egon Spengler dropper ud..)

SELECT Name, City, Birthyear, COUNT(*) AS ct
FROM table
WHERE Birthyear IN (SELECT MIN(Birthyear)
               FROM table
               GROUP by City)
GROUP BY City
ORDER BY Birthyear DESC LIMIT 3;

+-----------------+-------------+------+----+
| name            | city        | year | ct |
+-----------------+-------------+------+----+
| Henry Jones     | Chicago     | 1899 | 1  |
| Mac Taylor      | New York    | 1955 | 1  |
| Sarah Connor    | Los Angeles | 1959 | 1  |
+-----------------+-------------+------+----+

Rediger - tilføjet GROUP BY City til ydre forespørgsel, da personer med samme fødselsår ville returnere flere værdier. Gruppering på den ydre forespørgsel sikrer, at der kun returneres ét resultat pr. by, hvis mere end én person har det mindste Birthyear . ct kolonnen vil vise, om der findes mere end én person i byen med det Birthyear



  1. MySQL:Adgang nægtet for bruger 'user'@'IP_ADDRESS' - Fjernadgang tilladt for nogle værter mislykkes for andre værter

  2. Vis alle tabeller i en MySQL-database ved hjælp af PHP?

  3. PostgreSQL hvordan man kan se hvilke forespørgsler der er kørt

  4. Indekserede visninger og statistik