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

Returnerer en Min() og et andet felt?

Sagen er denne:enhver aggregeret funktion "er ligeglad" med resten af ​​sin linje Hvis den ikke var MIN men SUM, er den nemmere at se...

Løsningen er lidt tricky, du bør gøre noget, der involverer LEFT JOIN med en ulighed :

SELECT u.username, l.timer AS intScore, l.hashtag

FROM
 leaderboard l
 INNER JOIN users u ON u.users_id = l.users_id
 LEFT JOIN leaderboard l2 ON l.users_id = l2.users_id AND l2.timer < l.timer
WHERE
 l2. users_id IS NULL
ORDER BY intScore ASC

Ideen får den laveste værdi ved at springe MIN-funktionen over og få hele rækken

Filtrering efter dato (eller enhver anden kolonne/kriterier for den sags skyld) fra leaderboard-tabellen vil kræve, at vi filtrerer hver tabel, vi bruger. P>

SET @date0 = '2018-01-01';
SELECT u.username, l.timer AS intScore, l.hashtag

FROM
 leaderboard l
 INNER JOIN users u ON u.users_id = l.users_id
 LEFT JOIN leaderboard l2 ON l.users_id = l2.users_id AND l2.timer < l.timer AND l2.game_date >= @date0
WHERE
 l.game_date >= @date0
 l2.users_id IS NULL
ORDER BY intScore ASC

håber det hjælper




  1. TO_DATE-funktion i ORACLE

  2. Sådan udskrives indlæg og kommentarer med kun én sql-forespørgsel

  3. 8 WP-CLI-kommandoer til at rydde op og optimere dit websted

  4. Skinner:PG::InsufficientPrivilege:FEJL:tilladelse nægtet til relation schema_migrations