mysql分组后获取每个组排序后的第一条数据(整行)
有一个学生分数表student,数据结构是这样的
CREATE TABLE `student` (
`id` int(11) NOT NULL,
`student_id` int(11) DEFAULT NULL,
`line` int(11) DEFAULT NULL,
`subject_type` int(11) DEFAULT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
我想根据学生分组 ,得到每个分组中分数最高的那一条数据:
大约20万数据
正确写法:
1 SELECT
2 max.*, MAX(max.line) lineMax
3 FROM
4 (
5 SELECT DISTINCT
6 (a.id) tt,
7 a.*
8 FROM
9 student a
10 ORDER BY
11 a.line DESC
12 ) max
13 GROUP BY
14 student_id
distinct
DISTINCT(主键)让数据集先进行排序再分组取排序后的第一条
但是:sharding-jdbc不支持此操作
分库分表后,就成为了一个阉割型的数据库。很多sql的特性是不支持的,需要使用其他手段改进。以下以3.0.0版本进行描述。
distinct
having
sharding-jdbc不支持having,可使用嵌套子查询进行替代
union
sharding-jdbc不支持union(all),可拆分成多个查询,在程序拼接
关于子查询
sharding-jdbc不支持在子查询中出现同样的表,
由于归并的限制,子查询中包含聚合函数目前无法支持。
转自:https://blog.csdn.net/persistencegoing/article/details/92764058
https://shardingsphere.apache.org/document/current/cn/features/sharding/use-norms/sql/
mysql分组后获取每个组排序后的第一条数据(整行)的更多相关文章
- mysql 分组后取每个组内最新的一条数据
首先,将按条件查询并排序的结果查询出来. mysql order by accepttime desc; +---------------------+------+-----+ | acceptti ...
- SQL 分组后,获取每组中的最大值对应的数据
select gr,num,dt,(select bys from test where gr=b.gr and dt=b.dt) bys from ( select gr,count(0) num, ...
- mssql sqlserver 使用sql脚本获取群组后,按时间排序(asc)第一条数据的方法分享
摘要: 下文讲述使用sql脚本,获取群组后记录的第一条数据业务场景说明: 学校教务处要求统计: 每次作业,最早提交的学生名单下文通过举例的方式,记录此次脚本编写方法,方便以后备查,如下所示: 实现思路 ...
- Linq--取group分组后的每组第一条数据
Linq对指定字段分组并取每组第一个值 先排序后分组 目的:取每个RequestID组内的最大HistoryID的数据 //对RequestID进行分组降序排序,去每组的第一条数据 IList< ...
- MYSQL实现分组排序并取组内第一条数据
一.需要实现分组排序并且取组内状态优先级最高的数据 有一张这样的数据表, 需求是根据error_type分组然后取status最小的第一条数据 第一种写法: select t.* from ( sel ...
- postgresql分组后获取第一条数据
-- 根据编号分组取第一条数据 select * from table t where t.no=(select max(no) from table t1 where t1.no=t.no) -- ...
- oracle分组取每组第一条数据
oracle分组后取每组第一条数据 '数据格式 分组取第一条的效果 [sql] SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY ...
- mysql分组取最大(最小、最新、前N条)条记录
在数据库开发过程中,我们要为每种类型的数据取出前几条记录,或者是取最新.最小.最大等等,这个该如何实现呢,本文章向大家介绍如何实现mysql分组取最大(最小.最新.前N条)条记录.需要的可以参考一下. ...
- oracle 根据字段分组取第一条数据及rank函数说明
当前有这样一个需求,根据外键对子表数据进行分组,取每组中的一条数据就行了,如图: 如:COMMANDID = 26的有两条,只取一条数据. sql语句: select * from(select SY ...
- LINQ分组取出第一条数据
Person1: Id=, Name="Test1" Person2: Id=, Name="Test1" Person3: Id=, Name="T ...
随机推荐
- [转帖]Linux中的inode到底是什么
https://www.jianshu.com/p/6aa4d7ef17de inode 是什么? 要了解 Linux 操作系统上的 inode 前,我们先来说说 Linux操作系统上的文件.对于 L ...
- [转帖]JVM——内存区域:运行时数据区域详解
https://www.jianshu.com/p/cded765cfd1b 关注:CodingTechWork,一起学习进步. 引言 我们经常会被问到一个问题是Java和C++有何区别?我们除了 ...
- [转帖]Intel甘拜下风,挤牙膏比不过兆芯CPU
https://baijiahao.baidu.com/s?id=1735997557665412214 本文比较长,有万字左右,因此在前面先把小标题集中亮个相. 即使大家一晃而过,我也要让精心拟 ...
- [换帖]Linux命令之iconv命令
一.命令简介 日常工作中我们需要将windows生成的文件上传到Linux系统,有时候会因为编码问题出现显示乱码.例如我上传了一个csv文件到Linux服务器上,默认编码为GB2312,在Linu ...
- http 中使用 gzip 输出内容时,如何预先压缩前一半页面?
作者:张富春(ahfuzhang),转载时请注明作者和引用链接,谢谢! cnblogs博客 zhihu Github 公众号:一本正经的瞎扯 背景是这样:要输出一个很大的动态页面,不开 gzip 压缩 ...
- 【JS 逆向百例】HN某服务网登录逆向,验证码形同虚设
声明 本文章中所有内容仅供学习交流,抓包内容.敏感网址.数据接口均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关,若有侵权,请联系我立即删除! 逆向目标 目标:某政务服务 ...
- word文档删除空白页
记住两个快捷键 CTRL+Backspace Shift+Backspace 鼠标箭头放在空白的页面 按住键盘上的快捷键 就可以成功删除了不要天天看营销号设置什么磅值,全选删除啥的 效果如下
- win11和win10的快捷键列表
win11特有的快捷键 win键就是图案是windows图标的那个按键 作用 快捷键 打开快速设置,win11是展开音量,wifi,蓝牙的设置项,win10也可以用 win + a 打开通知中心和日历 ...
- rider代码折叠
可折叠元素块 rider那些元素块是可折叠?参考官方文档:Fold Code Elements Code folding works for the keywords if/ while/ else/ ...
- Spring框架源码分析
目录 Spring核心思想 Spring源码编译 自定义实现Spring框架IOC与DI Spring源码Ioc核心模块分析 BeanDefinition整体介绍 FactoryBean接口的使用 B ...