zoukankan      html  css  js  c++  java
  • MySQL 5.6以上版本group by中的子查询失效

    1、类似于QQ聊天,打开软件要求显示最新的回复消息,正常思维是先总体分组(group by)然后再对每个小分组进行排序(order by)

    SQL:

    SELECT t.* FROM (SELECT * 
            FROM private_letter p
            WHERE belong_id = 123456 
            ORDER BY create_time DESC) t 
     GROUP BY t.session_id;

    结果显示还是默认

    经查阅资料发现,mysql 5.6以上版本对子查询中的排序进行优化,是不会执行的。

    解决办法:在子查询中加入 limit 关键字即可解决,

    成功解决后是这样的:

    SQL:

    SELECT t.* FROM (
            SELECT * 
            FROM private_letter p
            WHERE belong_id = 123456 
            ORDER BY create_time DESC LIMIT 10) t 
     GROUP BY t.session_id;

    至此,成功解决子查询中排序的问题!

  • 相关阅读:
    数据--第28课
    数据--第27课
    数据--第26课
    数据--第25课
    数据--第23课
    数据--第24课
    数据--第22课
    数据--第21课-递归课后练习
    lambda表达式
    数组和链表
  • 原文地址:https://www.cnblogs.com/Nickc/p/14510651.html
Copyright © 2011-2022 走看看