首页
学习
活动
专区
圈层
工具
发布

MySQL 分组排序后 → 如何取前N条或倒数N条

分组后取第一条记录   我们先来简单回顾下实现方式   1、循环查数据库     逻辑很清晰,实现起来也很简单,但是会循环查数据库,开发规范一般会明确禁止这种写法   2、 GROUP BY 结合 MySQL...取前N条或倒数N条   我们回到标题,分组排序后,如何取前N条记录或倒数N条记录   循环查数据库   1、先批量查询 task_id   2、再根据 task_id 逐个去查 t_task_exec_log...,排序获取前N条记录   3、最后进行一个数据汇合,封装成页面需要的数据格式   但这种方式会循环查数据库,一般是被禁止的   GROUP BY 结合 MySQL 函数   1、先批量查询 task_id...长度限制是需要考虑的点   新增最新记录表   这种方式比较契合只取第一条的情况,不适合取N条的情况   N不固定,这张表的存储数据范围就不好确定   如果为了全兼容的话,那这张表就成了 t_task_exec_log...,那就没意义了   窗口函数 MySQL8 新增的特性   关于窗口函数可查阅官方文档:Window Functions,不做过多介绍   我们用 ROW_NUMBER 来实现 取前N条或倒数N条

2.8K10

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

在数据库开发过程中,我们要为每种类型的数据取出前几条记录,或者是取最新、最小、最大等等,这个该如何实现呢,本文章向大家介绍如何实现mysql分组取最大(最小、最新、前N条)条记录。...: name val memo a 2 a2 a 1 a1 a 3 a3 b 1 b1 b 3 b3 b 2 b2 b 4 b4 b 5 b5 按name分组取val最大的值所在行的数据 方法一: select...种方法效率相同,第2,5种方法效率差些。...按name分组取val最小的值所在行的数据 方法一: select a.* from tb a where val = (select min(val) from tb where name = a.name...name = a.name and val < a.val) order by a.name 以上五种方法运行的结果均为如下所示: name val memo a 1 a1 b 1 b1 按name分组取第一次出现的行所在的数据

11.6K30
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    SQL分组查询后取每组的前N条记录

    首先,我们知道MySQL数据库分组功能主要是通过GROUP BY关键字来实现的,而且GROUP BY通常得配合聚合函数来使用用,比如说分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)...一、数据准备 数据库: MySQL 8.0社区版 表设计 资讯分类表: id 主键 name 分类名称 资讯信息记录表: code 说明 id 主键 title 资讯名称 views 浏览量 info_type_id...资讯分类 资讯信息记录表示例数据如下: ? 资讯信息记录表 需求 :取热门的资讯信息列表且每个类别只取前3条。...二、核心思想 一般意义上我们在取前N条记录时候,都是根据某个业务字段进行降序排序,然后取前N条就能实现。...要计算出某条资讯信息的在同资讯分类下所有记录中排第几名,换成算出 有多少条浏览量比当前记录的浏览量高,然后根据具体的多少(N)条+1就是N+1就是当前记录所在其分类下的的排名。

    28.4K32

    效率提高N倍的19条MySQL优化秘籍

    一、EXPLAIN ---- 做MySQL优化,我们要善用 EXPLAIN 查看SQL执行计划。 下面来个简单的示例,标注(1,2,3,4,5)我们要重点关注的数据 ? type列,连接类型。...四、当只需要一条数据的时候,使用limit 1 ---- 这是为了使EXPLAIN中type列达到const类型 五、如果排序字段没有用到索引,就尽量少排序 ---- 六、如果限制条件中其他字段没有索引...当然,union all的前提条件是两个结果集没有重复数据。...优化的方法如下:可以取前一页的最大行数的id,然后根据这个最大的id来限制下一页的起点。比如此列中,上一页最大的id是866612。...LEFT JOIN A表为驱动表 INNER JOIN MySQL会自动找出那个数据少的表作用驱动表 RIGHT JOIN B表为驱动表 注意:MySQL中没有full join,可以用以下方式来解决

    79130

    同一个表里,怎么取各类数据的倒数第3条?

    小勤:有一个表,里面有多种分类,每个分类里有很多行数据,怎样能提取出每类数据的倒数第3条?如下: 大海:这个用Power Query比较简单,也顺便借这个例子来深入学习一下“分组”功能。...将这个数据加载到Power Query后,分组,选择所有行,如下图所示: 结果如下: 小勤:这样得到的是每个分类所对应的所有行? 大海:对的,而且你看一下生成的代码?...小勤:也就是说,用下划线(_)就是取得每个类别所对应的所有行,那咱们针对这个下划线去筛选数据就行了?...大海:聪明,咱们在下划线外面套2个函数:Table.FirstN(Table.LastN(_,3),1 ),前后如下图所示: 然后把数据展开: 结果就出来了: 小勤:原来分组还能这么玩儿...大海:原来咱们在做动态分组合并同类项的时候,默认地对某列的数据进行汇总或计算,这个列,其实前面省略了下划线,即下划线代表分组结果中当前组下所有行所形成的表!

    70820

    用python爬取4332条粽子数据进行分析

    爬虫 爬取淘宝数据,本次采用的方法是:Selenium控制Chrome浏览器自动化操作[1]。...selenium自动化爬取(需要淘宝扫描登录一次) from selenium import webdriver # 搜索商品,获取商品页码 def search_product(key_word):...数据整理 此时我们爬取得到的数据: ?...整理前的数据 数据还是比较粗糙的,有几个问题需要我们去处理: 添加列名 去除重复数据(翻页爬取过程中会有重复) 购买人数为空的记录,替换成0人付款 将购买人数转换为销量(注意部分单位为万) 删除无发货地址的商品...本文数据和爬虫可视化源码下载地址: https://alltodata.cowtransfer.com/s/d11c8906cd9c4c 参考文章 [1]数据分析与统计学之美: 《手把手教你爬取淘宝的笔记本电脑数据

    84441

    爬取720万条城市历史天气数据

    总数据720万,地区3200个,年份从2011-2019,大小950Mb,原始数据已丢失,需要的朋友可以自己运行脚本挂一晚上。中间遇到了很多坑,有机会我再写一遍博客专门讲讲大量数据爬虫遇到的坑。...数据源隐藏了,有需要的我可以直接发数据。使用过程中虽然有些绊脚石,总体来说还是很良好的,脚本语言groovy相比java的确省事儿很多。分享代码,供大家参考。...com.fission.source.httpclient.ApiLibrary 4import com.fission.source.httpclient.FanRequest 5import com.fission.source.mysql.MySqlTest...9import net.sf.json.JSONObject 10 11class Weather extends ApiLibrary { 12 13/** 14 * 获取城市2011-2018年数据...aqiInfo) 80 output(sql) 81 MySqlTest.sendWork(sql) 82 } 83 } 84} 这里是数据库的数据截图

    1.4K20
    领券