我有一个问题:
SELECT reply.id,
reply.message,
reply.userid,
reply.date,
medal.id,
medal.url,
medal.name,
user.id,
user.name AS username
FROM posts AS reply
LEFT JOIN users AS user ON reply.userid = user.id
LEFT JOIN medals AS medal ON medal.userid = user.id
GROUP BY reply.id
ORDER BY reply.id ASC
一切正常,除了我得到的奖牌是上升的而不是下降的 这意味着它会获取用户获得的第一枚奖牌 - 我需要获得最后一枚。
最佳答案
您看到每个组的第一条记录是偶然的。在 GROUP BY 查询中选择非聚合、非组唯一的列会导致选择未定义的记录。
有关更详细的解释,请阅读:http://dev.mysql.com/tech-resources/articles/debunking-group-by-myths.html .
完成您正在做的事情的一种正确方法是使用子查询,您可以在其中选择每个所需组的最大奖牌日期。
此处概述了此方法:http://dev.mysql.com/doc/refman/5.6/en/example-maximum-column-group-row.html
关于sql - mysql左连接升序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3655608/