sql - mysql左连接升序

标签 sql mysql greatest-n-per-group

我有一个问题:

   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/

相关文章:

mysql - 限制从内部联接返回的行数

php - 查询 MySQL 表,存储在 PHP 数组中,然后从数组中返回单个值

python - SQLAlchemy 多对多 AND 过滤器

mysql - Impossible MySQL insert ... select foreign key constraint error‽

jquery - db查询时如何处理随机字母大小写实例?

sql - PostgreSQL:根据排序顺序仅选择每个 id 的第一条记录

mysql - 选择在过去 'x' 天内从类别 'y' 购买商品 'z' 次的所有客户

php - Mysql自动更新事件

php - MySQL/PHP : catch all entries between 2 times and check against 2 other times

mysql - MySQL 中的 ROW_NUMBER()