zoukankan      html  css  js  c++  java
  • group by 之后使用order by 无效

    问题描述,我需要写一个用户的消息列表,跟微信一样,消息列表按照接收人员分组,接收的时间排倒序,而且列表中灰色文字显示最新的那一条消息。

    使用的查询语句是

    select * from message where to_member_id = 70 group by from_member_id order by message_time desc;

      

    数据

    解决方法一:

    select max(message_time) as max_message_time,message_id from message where to_member_id = 70 group by from_member_id order by message_time;

    这样查询之后就得到了按照时间倒序的每条信息和信息的时间

    然后接着将得到的数据循环,根据主键message_id 去查询更多的信息

    解决方法二:

    SELECT GROUP_CONCAT(message_id order by message_time desc ) as ids,from_member_id FROM  message  WHERE to_member_id = 70 GROUP BY from_member_id order by message_time desc

    解释:将条件to_member_id=70的消息的id给拼接起来,比如说是1,3,5,7,2,4,8     然后将这些id按照message_time排倒序,这样得到的结果如下

    发现查出来的结果是

    185  发给 70    的消息=>消息id是486,447

    61 发送给 70 的消息=>消息id是465,464,463,,,,,,,

    所以将查出来的数组直接取下标0即可

     转载请注明出处,谢谢

  • 相关阅读:
    洛谷 P4297 [NOI2006]网络收费
    bzoj 5072: [Lydsy1710月赛]小A的树
    树形背包
    loj #2071. 「JSOI2016」最佳团体
    bzoj 2427: [HAOI2010]软件安装
    bzoj 4987: Tree
    loj #2007. 「SCOI2015」国旗计划
    loj #2006. 「SCOI2015」小凸玩矩阵
    loj #2020. 「AHOI / HNOI2017」礼物
    loj #547. 「LibreOJ β Round #7」匹配字符串
  • 原文地址:https://www.cnblogs.com/fpcing/p/15092870.html
Copyright © 2011-2022 走看看