最近做IM的时候遇到一个问题,同时用到了这三个关键字。就是查询一个人的离线消息详情,我们服务端返回给客户端显示的这个详情包括了三个内容,第一个要求列出离线这段时间哪些人或者群给你发了消息,第二个这其中的某个人或者群发了多少条离线消息,第三个拿出最新的一条显示出来。很明显,group by分组哪些人或者群给你发了离线消息,count()得到离线消息数量,order by时间来排序拿出最新的消息。

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc group by from_company_id, from_user_id;

然后果不其然group by和order by一起检索就报错了,我们可以用嵌套子查询。

select count(1) as cnt, msg_data from (select * from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc) as temp_table group by from_company_id, from_user_id;

我们可以对已经排序的结果集,再来分组并计算数量。这里还有一个暗坑,我自己不小心给躲过去了,其实count()会造成order by排序无效,举个例子:

select count(1) as cnt, msg_data from t_im_chat_offline_msg where to_company_id = ? and to_user_id = ? order by create_time desc;

这个语句最后得到的一条记录,其中的msg_data其实是根本没有排序的结果,也就是数据库原顺序,应该是先插入的一条消息,就是说时间旧的消息。为了避免这个问题,所以嵌套子查询在这里先排序,再让它去count()就规避了。自己无意躲过去了,还好反复改语句测试了一番才发现。

本文标题: mysql中count(), group by, order by使用详解

本文地址: http://www.cppcns.com/shujuku/mysql/191563.html

mysql group by having count_mysql中count(), group by, order by使用详解相关推荐

  1. mysql count order by_【数据库】mysql中count(), group by, order by使用方法分享

    本文主要和大家分享mysql中count(), group by, order by使用方法,mysql中order by 排序查询.asc升序.desc降序,group by 分组查询.having ...

  2. mysql orderby count_mysql中count(),groupby,orderby使用方法分享

    本文主要和大家分享mysql中count(), group by, order by使用方法,mysql中order by 排序查询.asc升序.desc降序,group by 分组查询.having ...

  3. 在MySQL的InnoDB存储引擎中count(*)函数的优化

    转载自  在MySQL的InnoDB存储引擎中count(*)函数的优化 写这篇文章之前已经看过了很多数据库方面的优化内容,大部分都是加索引.使用事务.要什么select什么等等.然而,只是停留在阅读 ...

  4. mysql去重函数的使用方法_MySQL中使用去重distinct方法的示例详解

    一 distinct 含义:distinct用来查询不重复记录的条数,即distinct来返回不重复字段的条数(count(distinct id)),其原因是distinct只能返回他的目标字段,而 ...

  5. mysql如何限制数据修改密码_MySQL_MySQL数据库中修改密码及访问限制设置详解,MySQL是一个真正的多用户、多 - phpStudy...

    MySQL数据库中修改密码及访问限制设置详解 MySQL是一个真正的多用户.多线程SQL数据库服务器.MySQL是以一个客户机/服务器结构的实现,它由一个服务器守护程序mysqld和很多不同的客户程序 ...

  6. pdo mysql fetchall_PDO中获取结果集之fetchAll()方法详解

    fetchAll()方法是获取结果集中的所有行,返回一个包含结果集中所有行的二进制数组!大理石机械构件维修厂家 那么在上一篇<PDO中获取结果集之fetch()方法详解>中,我们介绍了fe ...

  7. Linux服务端开发——Linux中stat函数和stat命令使用详解

    这篇文章主要介绍了Linux中stat函数和stat命令使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧 stat函数和s ...

  8. 站长在线Python精讲:在Python中匹配字符串的3个方法详解

    欢迎你来到站长在线的站长学堂学习Python知识,本文学习的是<在Python中匹配字符串的3个方法详解>.本知识点主要内容有:使用match()方法进行匹配.使用search()方法进行 ...

  9. Python中的list/tuple/dict/set数据类型详解

    Python中的list/tuple/dict/set数据类型详解 Python内部内置了一些数据类型与结构,可以方便在编程时候的使用. list List存储一系列的有序集合,并且元素内容可变(可更 ...

最新文章

  1. 一起学DNS系列(十)图、例详解DNS递归和迭代查询原理及过程 (1)
  2. linux sshd cpu 过高 问题解决
  3. 安装双系统(win10+Ubuntu18.0)使用一段时间后,就直接进入win10,bios启动项里也没有Ubuntu
  4. .Net 反射机制写Log
  5. 1042 字符统计 (20分)——16行代码满分
  6. [zz]Ubuntu下使用Eclipse和PyDev搭建完美Python开发环境
  7. Win10 JAVA安装及环境搭建(windows jdk,windows java环境配置)
  8. 哈工大期末考试java_哈尔滨工业大学2019算法设计期末试题
  9. c语言课程设计物业管理,C语言-小区物业管理-实验报告
  10. 网络编程+并发编程总结
  11. C语言程序运行闪退解决方案
  12. c语言乐谱提取软件,SmartScore X2 Pro(乐谱扫描识别软件) V10.5.4 官方版
  13. 【数据库】MS SQL SERVER数据库日志压缩方法
  14. 微信小程序会议OA-后台数据交互(首页)05
  15. 架构设计五大原则 SOLID五大设计原则
  16. 详解one-hot独热编码
  17. oracle免费版本下载地址,Oracle各版本下载地址和方法
  18. ViewGroup源码解读
  19. Z-Libary最新地址检测,再也不用担心找不到ZLibary了
  20. 计算机试讲教案模板范文,20分钟试讲教案模板

热门文章

  1. wxWidgets:wxUIActionSimulator 示例
  2. boost::system::linux_error相关的测试程序
  3. boost::iota相关的测试程序
  4. boost::gil::ColorBaseConcept用法的测试程序
  5. boost::geometry::concepts::check用法的测试程序
  6. boost::describe模块实现==重载的测试程序
  7. DCMTK:存储服务类提供者(C-STORE操作)
  8. DCMTK:读取多个图像的示例应用程序
  9. DCMTK:读取DICOM图像,并使用设置创建PGM位图
  10. VTK:PolyData之ImplicitSelectionLoop