MySQL对列排序,分组排序
来源:互联网 发布:javascript编程艺术 编辑:程序博客网 时间:2024/05/18 03:12
除了平时做demo,第一次在项目中使用mysql,今天用到了分组排序,习惯性的想到之前oracle和DB2中用过row_number() over(partition by ......),果断使用over函数,然后mysql里面果断没有over函数。于是百度了解了一下,需要自己来记录序号,于是简单整理了一下。
首先试一下,简单的排序,类似于for循环,直接累加,即赋初值,累加。赋初值,@i := 0,累加@i := @i + 1。
具体的SQL如下
select (@i := @i + 1)rownum,b.* from (
selectt.spdf_path,doc_id,page,keyword,t.times from sign_record t group by id order bykeyword) b,(SELECT @i := 0) AS a;
如上,将查询结果进行排序从1到10
然后试一下分组排序
当用group by的时候,需要按照分组的列比较排序,当按照分组时候,如果分组数据相同那么序号累加,当分组数据不相同的时候,重新累加。
select (@i := case when @pre_keyword=keyword then @i + 1 else 1 end) rownum,b.*, @pre_keyword:=keyword from (
selectt.spdf_path,doc_id,page,keyword,t.times from sign_record t group by id order bykeyword
) b,(SELECT @i := 0, @pre_keyword:='') AS a;
如上SQL,分组列是keyword
1、 初始化"序号列"@i,"分组变化标记列"@pre_keyword,SELECT @i:= 0, @pre_keyword:=''
2、 "分组变化标记列"赋值为分组列,@pre_keyword:= keyword
3、 判断条件,累加还是重新计算,@i := case when @pre_keyword=keyword then@i + 1 else 1 end,如果"分组变化标记列"等于分组列,序号累加,否则说明是新的一组,"序号列"赋值1
如上,根据关键字分成了四组,然后有四次排序。
- MySQL对列排序,分组排序
- mysql分组排序方案
- mysql分组排序查询
- mysql 分组排序
- mysql分组查询 排序
- mysql分组查询排序
- MySQL分组排序
- mysql分组排序
- mysql 分组排序
- mysql 分组排序
- mysql分组排序
- mysql实现分组排序
- mysql分组排序
- mysql排序分组
- mysql多列排序
- MySql排序分组的方法
- mysql 分组后再排序
- MYSQL先排序后分组
- 5. UE4的结构体及结构体数组
- FZU 2242
- 百度富文本编辑器(ueditor)自定义上传接口(路径)
- Ionic(一)环境搭建
- 安装laravel-ide-helper增强代码提示
- MySQL对列排序,分组排序
- Android Studio手动配置Gradle的方法
- Nginx限制访问速率和最大并发连接数模块--limit (防止DDOS攻击)
- Android中visibility属性VISIBLE、INVISIBLE、GONE的区别
- 为什么要学shiro
- vue打包后CSS中引用的背景图片不显示问题
- construct2超简单入门
- 卷积滤波
- python面向对象入门之getter和setter和私有变量