取分组中的特定记录

表test有三列(a,b,c),100万条记录。(a,b)上有唯一索引,现在要查找对于每一个a,b的值最大的那条记录。有好几种方法。

1. select * from (select * from test order by d desc) as t group by a;
速度最快的,但只有MySQL可以用。

2. select t1.* from test t1 left join test t2 on t1.a = t2.a and t1.b < t2.b where t2.b is null; 因为用了联接,查询的行数比较多,所以比较慢。a的选择率越低,速度越慢。

3. select * from test where (a,b) in (select a,max(b) from test group by a); 这个慢不是因为表扫描,而是因为对于test的每一行,select a,max(b) from test group by a都会做一遍,这个从profile的结果可以看出来,explain中select_type是DEPENDENT SUBQUERY应该是同样的意思。
所以先建一个临时表可以提高速度,
select t1.* from test t1 , (select a,max(b) as b from test group by a) as t2 where t1.a = t2.a and t1.b = t2.b
这种方法,a的选择性越高则越慢

4. select * from test t1 where not exists (select * from test t2 where t1.a = t2.a and t1.b < t2.b)
和2差不多
国科大学习资料--高级软件工程-复习题简答题答案 国科大学习资料–高级软件工程(罗铁坚 魏峻 刘丹)-复习题简答题答案 def fib3 n (1…n).inject([0,1]){|mem| puts mem[0]+mem[1]; [mem[1],mem[0]+mem[1]]} end ===================================================================================================================================== 阅读详情

相关推荐

SAP采购订单行项目增强实战:用BADI ME_GUI_PO_CUST添加自定义字段(避坑指南)

本文详细解析了如何通过BADI ME_GUI_PO_CUST在SAP采购订单行项目中添加自定义字段,包括技术架构理解、字段扩展步骤、自定义函数组创建及BADI实现。文章特别强调了避开官方文档未提及的陷阱,如字段映射限制和屏幕显示问题,并提供了高级优化技巧和性能建议。

weixin_30402343的博客 595

SQL取分组后每组中的一条特定记录

2019独角兽企业重金招聘Python工程师标准>>> ...

weixin_34381666的博客 1098

信贷风控分析—征信数据源

详解企业和个人征信报告,以及信贷风控之指标构造案例参考

csdnbt的博客 3644

选取group by分组中特定的记录

select a.* from a inner join (select max(id) as mid from a group by type) a2 on a.id=a2.mid; explain 结果: 1,首先做select max(id) as mid from a group by type 2,再做inner join,因为使用的是主键,所以很快 3,再做其它where

Alps__的专栏 2751

如何用谷歌插件Apollo.io高效开发客户?手把手教你避开常见坑点

本文详细介绍了如何利用谷歌插件Apollo.io高效开发外贸客户,包括核心功能解析、免费额度最大化利用策略、多插件协同技巧以及常见陷阱规避方法。通过Apollo.io的智能匹配算法和庞大数据库,外贸从业者可以精准锁定目标客户,提升开发效率。

banana的博客 888

C#调用企业微信JS-Sdk实现扫描二维码

企业微信JS-SDK是企业微信面向网页开发者提供的基于企业微信内的网页开发工具包。通过使用企业微信JS-SDK,网页开发者可借助企业微信高效地使用拍照、选图、语音、位置等手机系统的能力,同时可以直接使用企业微信分享、扫一扫等企业微信特有的能力,为企业微信用户提供更优质的网页体验提示:生成签名之前必须先了解一下jsapi_ticket,jsapi_ticket是H5应用调用企业微信JS接口的临时票据。正常情况下,jsapi_ticket的有效期为7200秒,通过access_token来获取。

清浅 939

oracle如何取分组最大值记录

分组最大值记录   比如     序号          名称       数量               1              A        20        2              A        10        1              B        20        2              B        

it_taojingzhan的博客 3万+

从入门到精通!Arduino 全栈开发深度指南

本文围绕 Arduino 开发撰写全攻略,从基础入门到高级应用层层递进。开篇介绍 Arduino 概念、优势及硬件家族,引导读者完成开发环境搭建与首个 LED 闪烁项目;深入讲解编程语法、I/O 控制及通信协议;详细阐述传感器、模块应用与调试优化技巧;最后以自定义库开发、低功耗设计等高级内容收尾,并给出综合项目案例与产品化思路。无论新手入门,还是开发者进阶,均可从中系统学习 Arduino 知识,掌握从理论到实践的全流程开发技能。

邓邓子的博客 2757

MySQL 分组取每组随机五条记录

技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本:https://blog.youkuaiyun.com/hqpshidashen/article/details/146934579。而需求要查的就是上面表格中标红部分的记录, 所以在这张临时表基础上再加一条筛选条件即可,函数, 将整张表的数据根据日期分组后, 每个日期的分组里面, 每条记录加上一个排序字段。最近需要对产品进行抽样调查, 给的取数逻辑是产品上线以来, 每天取任意5笔借据的信息。: 记录的唯一标识符。

hqpshidashen的博客 477

【华为OD机试真题 2025B卷】662、静态扫描 | 机试真题+思路参考+代码解析(C++、Java、Py)(B卷复用)

【华为OD机试真题 2025B卷】662、静态扫描 | 机试真题+思路参考+代码解析(C++、Java、Py)(B卷复用) 华为od机试,华为od机试真题,华为od机试E卷,华为odE卷,华为od机试真题E卷,华为OD,华为OD机试,华为OD机试真题,华为od机考,华为od机试D卷,华为od机试真题D卷,华为od手撕代码,华为od,华为od机试C卷,华为od e卷,华为2024e卷,od机试,2024E卷,华为OD机试E卷,什么是华为od,华为od介绍,全面了解华为od,2024华为od,如何备战华为od

KJ.JK 5401

[数学建模][2012年A国赛模拟] 3. 葡萄酒的评价

暑期学校数学建模培训第三次模拟:2012年国赛A题,一道完全统计方面的题目。据老师反映当年有位老师所带领小组取得“全国10佳优秀论文奖”,我们大组搞统计的老师建模能力不行,但其统计理论非常扎实,在此期间给予我们非常大的帮助,十分感谢老师的倾囊相授。我们小组的定位也不在统计方向,主攻物理建模及优化模型,故本次模拟就用SPSS软件简单做了下,还是学到了多元统计的许多知识,达到了本次训练的目的。 ...

Y-puyu 的博客 3万+

mysql 分组 最小一个_mysql分组取最大(最小、最新、前N条)条记录

在数据库开发过程中,我们要为每种类型的数据取出前几条记录,或者是取最新、最小、最大等等,这个该如何实现呢,本文章向大家介绍如何实现mysql分组取最大(最小、最新、前N条)条记录。需要的可以参考一下。先看一下本示例中需要使用到的数据创建表并插入数据:CREATE TABLE`tb` (`id`int(11) NOT NULLAUTO_INCREMENT,`name`varchar(10) CHAR...

weixin_33275503的博客 765

040、全志V853低功耗AI视觉平台的ISP调优——电池供电场景下的画质与功耗平衡

本文分享了全志V853 AI视觉平台在电池供电场景下的ISP调优经验。作者通过实际项目踩坑案例,揭示了V853 ISP的特殊性:不同于主流平台,其ISP与CPU共享时钟域,降噪能力有限,需特别注意功耗控制。关键优化策略包括:关闭无效ISP模块、优化Sensor联动时钟、采用场景自适应配置、开发快速启动模式等。特别指出V853个体差异大,量产需考虑高低温影响。文章强调V853的ISP功耗优化需从寄存器级别精打细算,不能简单套用其他平台经验,建议选型时单独评估ISP功耗,避免续航缩水。

zzfmlxs的博客 27

ABAP 分组取最新的2条记录

需求: 取出表中ZHR_KHND相等中最新的2条记录 方法: 先对"主键"进行分组,然后分组后取最大的2条 表内数据 人员编号 考核年度 季度 评估得分 评级 1 2021 1 100 A 1 2021 2 100 A 1 2021 3 100 A 1 2021 4 100 A 2 2021 1 100 A 2 2021 2 100 A 2 2021 3 100 A 2 2021 4 100 A 期望结果 人员编号 考核年度 季度 评估得分 评级

Joker's blog 1298

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

ssm框架搭建

这个是一个在idea上成功跑起来的ssm框架项目,保存在这里方便以后使用直接下载

mysql 查询分组top_详解MySQL分组排序求Top N

详解MySQL分组排序求Top NMySQL分组排序求Top N表结构按照grp分组,按照num排序,每组取Top 3,输出结果如下:源代码:SELECT * FROM score AS t3WHERE (SELECT COUNT(*) FROM score AS t1LEFT JOIN score AS t2ON t1.grp = t2.grp AND t1.num < t2.numWHE...

weixin_32601937的博客 1336

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

oracle共几条当前几条,Oracle 以某字段分组,以某字段排序,取前几条

select * from (select row_number() over(partition by 以此字段为分组 order by 以此字段排序 desc rnfrom dual) where rn=1 --表示取第一个如:id date1 11/041 11/081 11/122 11/032 11/01结果id date1 11/122 11/03...

weixin_35823441的博客 1039

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

sql如何取前几行_SQL分组取每组前一(或几)条记录(排名)

mysql分组取每组前几条记录(排名) 附group by与order by的研究http://www.jb51.net/article/31590.htm--按某一字段分组取最大(小)值所在行的数据代码如下:/*数据如下:name val memoa 2 a2(a的第二个值)a 1 a1--a的第一个值a 3 a3:a的第三个值b 1 b1--b的第一个值b 3 b3:b的第三个值b 2 b2b...

weixin_34900419的博客 759

mysql分组最大自连接_MySQL 自连接分组取每组最大N条记录

1、测试数据:create table t2 (id int primary key,gid char,col1 int,col2 int) engine=myisam;insert into t2 values(1,'A',31,6),(2,'B',25,83),(3,'C',76,21),(4,'D',63,56),(5,'E',3,17),(6,'A',29,97),(7,'B',88,63...

weixin_39875516的博客 99

mysql自连接分组查询最新_MySQL 自连接分组取每组最大N条记录

1、测试数据:create table t2 (id int primary key,gid char,col1 int,col2 int) engine=myisam;insert into t2 values(1,'A',31,6),(2,'B',25,83),(3,'C',76,21),(4,'D',63,56),(5,'E',3,17),(6,'A',29,97),(7,'B',88,63...

weixin_42613360的博客 187

【Oracle】【9】取前N条记录——rownum和row_number() over()的使用

前言: 1,取前10条数据 2,取第10条到第20条的数据 3,排序后再取前10条 4,分组后取前10条 正文: 1,最普通的情况,取前10条数据 select * from table where rownum <= 10 2,取第10条到第20条的数据 注:因为rownum本身只能用 <=的比较方式,所以用rownum rn把rownum转成实例...

aizhu4795的博客 765

oracle 分组后取每组第一条数据

‘数据格式 分组取第一条的效果 sql SELECT * FROM (SELECT ROW_NUMBER() OVER(PARTITION BY x ORDER BY y DESC) rn, test1.* FROM test1) WHERE rn = 1 ...

weixin_30716725的博客 109

SQL分组取最大问题

 --按某一字段分组取最大(小)值所在行的数据(2007-10-23于浙江杭州)/*数据如下:name val memoa    2   a2(a的第二个值)a    1   a1--a的第一个值a    3   a3:a的第三个值b    1   b1--b的第一个值b    3   b3:b的第三个值b    2   b2b2b2b2b    4   b

880

mysql分组

mysql分组取每组前几条记录(排名) 附group by与order by的研究 --按某一字段分组取最大(小)值所在行的数据 /* 数据如下: name val memo a 2 a2(a的第二个值) a 1 a1--a的第一个值 a 3 a3:a的第三个值 b 1 b1--b的第一个值 b 3 b3:b的第三个值 b...

weixin_34245169的博客 89

oracle分组取第N条,ROW_NUMBER() OVER的用法

适用于一些分组取特定行数的情况,rn的值是每组的顺序而不是总的顺序。 “row_number() over” 括号内的部分按照从左往右排,就是先排左边的然后再排右边的 select row_number() over(partition by ORG_ID order by a.CREATETIME desc) rn,a.* from table a ...

入门菜鸟程序员的成长 318
上一篇: MySQL的 select 和 sort 变量
下一篇: read_rnd_buffer和sort_buffer
epee
博客等级 码龄24年 2粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值