• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > mysql中count(), group by, order by使用方法分享

mysql中count(), group by, order by使用方法分享

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了order,mysql,group等相关知识,希望本文的分享对您有所帮助
本文主要和大家分享mysql中count(), group by, order by使用方法,mysql中order by 排序查询、asc升序、desc降序,group by 分组查询、having 只能用于group by子句、作用于组内,having条件子句可以直接跟函数表达式。使用group by 子句的查询语句需要使用聚合函数。

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

相关推荐:

有关count()的文章推荐10篇

MySql中使用Group By对多个字段进行分组的方法

详解MySQL中Order By多字段排序规则

以上就是mysql中count(), group by, order by使用方法分享的详细内容,更多请关注微课江湖其它相关文章!

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL Order by 语句用法与优化详解
  • 深入解析mysql中order by与group by的顺序问题
  • Mysql中order by、group by、having的区别深入分析
  • MySQL查询优化:连接查询排序limit(join、order by、limit语句)介绍
  • mysql分组取每组前几条记录(排名) 附group by与order by的研究
  • MySQL Order By Rand()效率分析
  • MySQL Order By用法分享
  • MySQL Order By索引优化方法
  • MySQL ORDER BY 的实现分析
  • MySQL Order By语法介绍

相关文章

  • 2017-05-11mysql 不等于 符号写法
  • 2017-05-11高性能MySQL读书笔记 找出谁持有锁
  • 2018-12-05sqlserver 中charindex/patindex/like 的比较
  • 2018-12-05sql 刷新视图
  • 2018-12-05SQL Server SQL高级查询语句小结
  • 2018-12-05解析mysql创建本地用户及赋予数据库权限
  • 2018-12-05SQL Server 中查看SQL句子执行所用的时间
  • 2018-12-05Linux下查看MySQL的安装路径
  • 2018-12-05sqlserver找回企业管理器的方法
  • 2018-12-05安装MSSql2005时 “以前的某个程序安装已在安装计算机上创建挂起

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql列column常用命令的使用总结
    • MySQL索引的详解及实例教程
    • mysql-cluster 使用介绍
    • mysql下普通索引和唯一索引的效率对比
    • 深入理解MySQL进阶漂流记(三)
    • win10下如何安装两个MySQL5.6.35?
    • hibernate如何连接mysql数据库?
    • mysql中is null语句的用法分享
    • mysql的增删改查常用语法
    • 解决SQL2005备份数据库.dat或bak还原时的结构错误的解决方法

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有