这个问题在这里已经有答案了:
检索每个组中的最后一条记录-mysql(29个答案)
两年前关门了。
我正在构建一个排行榜,并希望返回一个min()值-但是,我还希望另一个字段与min值位于同一行。
到目前为止我有:
SELECT u.username, MIN(timer) AS intScore, l.hashtag
FROM users u
JOIN leaderboard l ON l.users_id = u.users_id
GROUP BY u.username
ORDER BY
intScore ASC
…这将返回正确的min intscore,但不是正确的hashtag。
db看起来像这样:
排行榜数据库:
users_id, timer, hashtag
1, 10, TEST
2, 12, TEST
1, 20, TEST
3, 15, TEST
1, 5, LIVE
4, 20, LIVE
我希望结果是:
users_id, timer, hashtag
1, 5, LIVE
2, 12, TEST
3, 15, TEST
4, 20, LIVE
任何帮助都将不胜感激
1条答案
按热度按时间uqxowvwt1#
事情是这样的:任何聚合函数“不关心”它的行的其余部分,如果它不是min而是sum,那么更容易看到。。。
解决方法有点棘手,你应该做一些涉及左连接和不等式的事情:
其思想是通过跳过min函数并获取整行来获得最小值
从排行榜表中按日期(或任何其他列/标准)筛选,将要求我们筛选我们使用的每个表。重要的是在on条件下筛选左联接表,否则我们将消除筛选空值影响:
希望有帮助