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

深度分析mysql GROUP BY 与 ORDER BY

作者: 字体:[增加 减小] 来源:互联网 时间:2017-05-11

通过本文主要向大家介绍了mysql group order,order by group by,group order,group by order,servicegrouporder等相关知识,希望本文的分享对您有所帮助

本文就和大家一起深入研究下mysql中group by与order by.下面是我模拟我的内容表

 

我现在需要取出每个分类中最新的内容

select * from test group by category_id order by `date`

结果如下

 

明显。这不是我想要的数据,原因是msyql已经的执行顺序是

引用

写的顺序:select ... from... where.... group by... having... order by..
执行顺序:from... where...group by... having.... select ... order by...

所以在order by拿到的结果里已经是分组的完的最后结果。
由from到where的结果如下的内容。

 

到group by时就得到了根据category_id分出来的多个小组

 
 

到了select的时候,只从上面的每个组里取第一条信息结果会如下

 

即使order by也只是从上面的结果里进行排序。并不是每个分类的最新信息。
回到我的目的上 --分类中最新的信息
根据上面的分析,group by到select时只取到分组里的第一条信息。有两个解决方法

1,where+group by(对小组进行排序)
2,从form返回的数据下手脚(即用子查询)
由where+group by的解决方法
对group by里的小组进行排序的函数我只查到group_concat()可以进行排序,但group_concat的作用是将小组里的字段里的值进行串联起来。

select group_concat(id order by `date` desc) from `test` group by category_id

 

再改进一下

select * from `test` where id in(select SUBSTRING_INDEX(group_concat(id order by `date` desc),',',1) from `test` group by category_id ) order by `date` desc

 

子查询解决方案

select * from (select * from `test` order by `date` desc) `temp`  group by category_id order by `date` desc

自己例子

</div>

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

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

  • 深入解析mysql中order by与group by的顺序问题
  • mysql分组取每组前几条记录(排名) 附group by与order by的研究
  • 深度分析mysql GROUP BY 与 ORDER BY
  • mysql中order by与group by的区别

相关文章

  • 2018-12-05php连接mysql数据库详细步骤(图文)
  • 2018-12-05MySQL数据库服务器端核心参数详解和推荐配置
  • 2018-12-05简述mysql中create routine 命令
  • 2018-12-05不同数据库之间导入导出功能介绍
  • 2018-12-05中小软件公司项目管理(3.3 项目外部关键成功因素)
  • 2018-12-05Oracle客户端 NLS_LANG 的设置方法
  • 2018-12-05 Redis学习笔记-List数据类型
  • 2017-05-11关于mysql delete的问题小结
  • 2018-12-05delete表的数据后恢复
  • 2018-12-05C#利用ODP.net连接Oracle数据库的操作方法

文章分类

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

最近更新的内容

    • 详细讲解mysql的存储过程、游标 、事务
    • 使用MySQL命令行修改密码
    • mysql 协议的初始化DB命令包及解析
    • 动态SQL中返回数值的实现代码
    • SQL命令大全-中英文对照第1/3页
    • 详解mysqldump数据导出的问题
    • 详细介绍mysql 协议的ColumnCount包及解析
    • mysql之delete删除记录后数据库大小不变_MySQL
    • 关于MySQL安装包如何使用的详细介绍
    • MS SQL Server和MySQL区别

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

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