mysql中count(), group by, order by使用详解

作者:linux_c_coding_man 时间:2024-01-26 00:48:11 

最近做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()就规避了。自己无意躲过去了,还好反复改语句测试了一番才发现。

来源:http://blog.csdn.net/peng314899581/article/details/54411777

标签:count(),groupby,orderby
0
投稿

猜你喜欢

  • Python开发实例分享bt种子爬虫程序和种子解析

    2021-04-03 17:55:29
  • asp Driver和Provider两种连接字符串连接Access时的区别

    2011-03-09 11:19:00
  • js判断密码强度的方法

    2024-04-19 10:58:24
  • Python基础必备之语法结构详解

    2023-12-07 05:29:06
  • mysql5.7 设置远程访问的实现

    2024-01-20 12:40:57
  • sql无效字符 执行sql语句报错解决方案

    2024-01-13 01:40:26
  • 基于mysql乐观锁实现秒杀的示例代码

    2024-01-18 02:01:41
  • 基于Python实现一个简易的数据管理系统

    2023-08-14 11:49:38
  • Js的MessageBox

    2008-05-16 10:25:00
  • Python time时间格式化和设置时区实现代码详解

    2023-05-17 00:09:17
  • MySQL与PHP的基础与应用专题之数据查询

    2023-11-10 10:09:55
  • asp连接各种数据库代码

    2008-03-11 11:16:00
  • Python脚本实现代码行数统计代码分享

    2023-02-26 00:24:13
  • 详解解Django 多对多表关系的三种创建方式

    2021-03-13 04:59:16
  • js将table的每个td的内容自动赋值给其title属性的方法

    2023-08-07 18:34:54
  • SQL窗口函数之排名窗口函数的使用

    2024-01-26 18:49:31
  • 详谈python3中用for循环删除列表中元素的坑

    2023-08-01 06:04:31
  • 在Ubuntu 20.04中安装Pycharm 2020.1的图文教程

    2022-05-28 23:03:48
  • 利用Python实现一个简易的截图工具

    2023-08-07 08:50:03
  • Python实现3行代码解简单的一元一次方程

    2023-08-29 19:14:50
  • asp之家 网络编程 m.aspxhome.com