group by内部排序
规则:
第一,凡是在group by后面出现的字段,必须同时在select后面出现;
第二,凡是在select后面出现的、同时未在聚合函数中出现的字段,必须同时出现在group by后面.
第一和第二条规则任何一条不满足,则默认去分组的第一条记录显示
having 子句被限制子已经在SELECT语句中定义的列和聚合表达式上。
重点内容
如果想对于group by内部进行排序,例如下面这种情形:
CREATE TABLE info
(
info_id
int NOT NULL AUTO_INCREMENT,
content
int DEFAULT 0 NOT NULL,
update_time
datetime DEFAULT 0 NOT NULL
)
这里每一个info_id对应着多个content,好比我们的论坛一样,每一个帖子,对应着多个评论
如果我们想取最新的那条评论有如下两种方式
第一种:
先对表中的内容按照update_time进行降序排序,然后再按照上面的规则,默认取分组中的第一条记录(因为content和update_time未出现在group by 后面);如下:
select
info_id , content , update_time
from
(select * from info order by update_time desc) as i
group by i.info_id
第二种:
先把所有需要的字段整体当做一个分组,再利用having语句对于分组进行刷选,选出当前info_id下,最大的update_time的那条记录
select
i1.info_id , i1.content, i1.update_time
from
info i1
group by
i1.info_id
having
i1.update_time =
(select max(update_time) from info i2 where i2.info_id = i1.info_id )
这样即可,大家如果还有什么好的建议记得告诉我。
group by内部排序相关推荐
- 10-1-直接插入排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第10章 内部排序 - 直接插入排序 --<数据结构>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课 ...
- 简单的选择排序(内部排序)
1 /** 2 * 3 */ 4 package com.trfizeng.selectionsort; 5 6 /** 7 * @author trfizeng 内部排序 选择排序-简单选择排序(S ...
- 10-9-堆排序-内部排序-第10章-《数据结构》课本源码-严蔚敏吴伟民版
课本源码部分 第10章 内部排序 - 堆排序 --<数据结构>-严蔚敏.吴伟民版 源码使用说明 链接☛☛☛ <数据结构-C语言版>(严蔚敏,吴伟民版)课本源码 ...
- 超详细!各种内部排序算法的比较
先来个表格总结直观展示下: 各种内部排序算法的性质 算法种类 时间复杂度 空间复 杂度 稳定性 最好情况 平均情况 最坏情况 插入排序 直 ...
- 直接插入排序(内部排序)
1 package com.trfizeng.insertionsort; 2 3 /** 4 * 5 * @author trfizeng 内部排序 插入排序 --- 直接插入排序(Straight ...
- 万字长文总结八大经典内部排序算法
写在前面:博主是一位普普通通的19届双非软工在读生,平时最大的爱好就是听听歌,逛逛B站.博主很喜欢的一句话花开堪折直须折,莫待无花空折枝:博主的理解是头一次为人,就应该做自己想做的事,做自己不后悔的事 ...
- 数据结构-第九章 内部排序-知识点总结1
第九章 内部排序 排序:重点在于对于记录的关键字进行排序,得到按关键字有序记录序列 分为: A.内部排序: 排序过程在内存中进行 B.外部排序: 待排序记录数据量过大,需要借助外部存 ...
- 掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等)...
掌握常见的内部排序方法(插入排序,冒泡排序,选择排序,快速排序,堆排序,希尔排序,归并排序,基数排序等). 数组高级以及Arrays(掌握) 排序方法 空间复杂度 时间复杂度 稳定性 插 入 排 序 ...
- 飞鸽传书内部排序算法的性能比较
部排序算法的性能比较 飞鸽传书内部排序算法的性能比较 1)排序的稳定性及分析: 假定在待排序的记录序列中,存在多个具有相同的关键字的记录,若经过排序,这些记录的相对次序保持不变,即在原序列中,ri=r ...
最新文章
- Waymo正式向真正“无人车”迈进,申请DMV远程监控许可证
- 识别TLS加密恶意流量
- 机器学习 不均衡数据的处理方法
- day17——其他内置函数
- 支架预压弹性变形值计算_复杂环境下大跨度箱梁整体支架法现浇安全要点
- matlab中对伺服电机,基于Matlab的伺服电机Modbus通讯研究
- 细节之中自有天地,整洁成就卓越代码
- C语言系列文章之#和##
- Spring Data JPA 从入门到精通~@PreUpdate异常场景分析
- ultraedit 运行的是试用模式_单元测试 —— 前后端分离开发模式下后端质量的保证...
- [noip-2013] 货车运输
- 英特尔主板快捷启动键_BIOS里如何设置U盘启动?硬盘怎么设置第一启动项?
- JS中判断某个字符串/数组中是否包含某个值
- for循环的auto用法
- 程序员节你们公司都有什么活动
- 5G智慧工业 | PLC设备远程监控系统解决方案
- IDEA鼠标悬停显示注释
- 信息学竞赛有什么好的比赛网站?
- java stream中的peek()用法
- PMP知识点总结—ADM与PDM的区别
热门文章
- 人事管理软件为企业提供了哪些价值?
- 波浪分析数据转换:大智慧、钱龙、胜龙可用Advanced GET ToGet 数据转换器V3.05特别版...
- caffe2 教程入门(python版)
- 仿毛笔字的自定义绘图View
- 【渝粤教育】广东开放大学 英诗汉译赏析 形成性考核 (46)
- Java中static作用及用法
- 多线程学习九:煮茶算法
- pthread使用方法
- python version compatibility_Python compatibility-lib包_程序模块 - PyPI - Python中文网
- electron tray_如何在Electron JS Tray菜单项中添加单选和复选框?