Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Retornando um Min() e outro campo?


A coisa é esta:qualquer função agregada "não se importa" com o resto de sua linhaSe não fosse MIN, mas SUM, é mais fácil de ver...

A solução é um pouco complicada, você deve fazer algo que envolva LEFT JOIN com uma desigualdade:
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

A ideia é obter o valor mais baixo pulando a função MIN e obtendo a linha inteira

Filtrar por data (ou qualquer outra coluna / critério para esse assunto) da tabela de classificação, exigirá que filtremos cada tabela que usamosÉ importante filtrar a tabela LEFT JOINed na condição ON, caso contrário, eliminamos o efeito de filtragem de NULLs:
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

espero que ajude