SQL在分组查询时,怎么获取最新一条记录?

数据表设计如下:

clipboard.png

clipboard.png

SQL语句:

SELECT * FROM `xds_message` WHERE  `user_id` = '0a9064ba-711f-5049-9300-c0cc88e1edf7'  AND `delete_time` = 0 GROUP BY to_user_id ORDER BY create_time ASC

结果如下:

clipboard.png

当我把排序规则改为create_time DESC,结果如下

clipboard.png

有没有办法分组时按照时间create_time排序,目前分组后content的值都是第一个,能不能分组按照create_time排序或者获取最新一个?

阅读 18k
3 个回答

select * from (SELECT * FROM xds_message WHERE  user_id = '0a9064ba-711f-5049-9300-c0cc88e1edf7' AND delete_time = 0 ORDER BY create_time DESC) AS msg_temp GROUP BY msg_temp.to_user_id;

操作上来说,先排序后分组即可,但是这个不同的数据库实现表现不一定一致,但是mysql是这样子的

新手上路,请多包涵

可以用recordid=1来得到,oracle 是可以,mysql和oracle应该是差不多的。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题