首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

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

而业务系统的官网上需要滚动展示一些热门资讯信息列表(浏览量越大代表越热门),而且每个类别的相关资讯记录至多显示3,换句话:“按照资讯分类分组,取每组的3资讯信息列表”。...资讯分类 资讯信息记录表示例数据如下: ? 资讯信息记录表 需求 :取热门的资讯信息列表且每个类别只取3。...二、核心思想 一般意义上我们在取N记录时候,都是根据某个业务字段进行降序排序,然后取N就能实现。...但是当你仔细阅读我们的题目要求,你会发现:“它是让你每个类型下都要取浏览量的3记录”。 一种比较简单但是粗暴的方式就是在Java代码中循环所有的资讯类型,取出每个类型的3记录,最后进行汇总。...要计算出某资讯信息的在同资讯分类下所有记录中排第几名,换成算出 有多少浏览量比当前记录的浏览量高,然后根据具体的多少(N+1就是N+1就是当前记录所在其分类下的的排名。

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

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

    N或倒数N   我们回到标题,分组排序后,如何取N记录或倒数N记录   循环查数据库   1、先批量查询 task_id   2、再根据 task_id 逐个去查 t_task_exec_log...,排序获取N记录   3、最后进行一个数据汇合,封装成页面需要的数据格式   但这种方式会循环查数据库,一般是被禁止的   GROUP BY 结合 MySQL 函数   1、先批量查询 task_id...  2、再根据这些 task_id 从 t_task_exec_log 批量查询每个任务的N记录的 log_id 集字符串 SELECT task_id, SUBSTRING_INDEX(GROUP_CONCAT...MySQL8 新增的特性   关于窗口函数可查阅官方文档:Window Functions,不做过多介绍   我们用 ROW_NUMBER 来实现 取N或倒数N   1、批量查询 task_id...  2、使用 ROW_NUMBER ,取N或倒数N   取第一   结果如下   取 5 SELECT * from ( SELECT *, ROW_NUMBER() OVER

    1.3K10

    不同的SQL平台,如何取百分之N记录

    最近帮业务部门梳理业务报表,其中有个需求是就算某指标等待时间最长的百分之十,其实就是对等待时长进行倒序排序后,取结果集的百分之十。...SQL Server实现方法 SQL Server上有个TOP Percent的方法可以直接取结果的(或后)百分之N 例如有如下一张City表 我们取10%的数据记录可以这样写: SELECT TOP...10 PERCENT * FROM City ORDER BY ID DESC 结果如下: Oracle实现方法 Oracle有个ROWNUM伪列可以用来帮助我们计算百分之N。...ROWNUM伪列的特点: ROWNUM是按照记录插入时的顺序排序的 ROWNUM并不实际存在,是对筛选后的结果集的一个排序,如果不存在结果集就不会有ROWNUM ROWNUM不能用基表名作为前缀 在使用...N的方法了,代码可以验证一下收藏起来留着下次直接套用。

    17610

    买内存的攻略

    看到这张图,你应该知道我是多少需要一根内存啊 内存价格在18年,到19年会大降价,因为中国要做半导体了,三星的闪存涨价,导致半导体相关的好多东西都涨价了,作为要靠电脑吃饭的人,真是无语。。。。...,期待三星无良商家早点倒闭 内存小常识 准备买内存,一定要弄清楚内存相关的参数,比如型号是DDR3,还是ddr4,笔记本内存的电压是低压1.35v,还是标压1.5v,以及内存的主频是1600mhz...要确定自己笔记本时候有多余的内存接口,以及获取主频,在任务管理器,内存中 要知道自己cpu参数,看是否支持ddr4,一般intel6代以后都支持ddr4内存。...查看电脑各个部件的温度 系统稳定性测试 这是自己狗东上内存的信息 虽然我cpu支持ddr4,但是主板不支持,所以只能买ddr3了,而且最好是1600mhz 主频,笔记本二根内存取决最低的主频...** 参考文章 内存怎么正确选择 怎样选购笔记本内存 DDR4内存用什么主板 怎么看主板是否支持DDR4内存 aida64基础教程

    4K80

    mysql 存储过程返回更新记录

    在数据库管理中,有时候我们需要在执行更新操作后,能够获取到更新的数据记录,以便进行数据对比或者回滚操作。MySQL的存储过程可以帮助我们实现这一需求。...本文将深入浅出地讲解如何通过MySQL存储过程获取更新记录,并提供具体的代码示例。什么是存储过程存储过程是预编译的SQL语句集合,它可以包含一系列的SQL语句、条件判断、循环等流程控制结构。...获取更新记录的需求在数据库表中,我们可能需要更新一记录,但同时需要保存更新的数据。这在审计日志、版本控制或事务回滚中非常常见。MySQL的BEFORE UPDATE触发器可以满足这一需求。...,我们可以在old_records表中看到更新记录。...通过这个例子,我们看到了如何使用MySQL存储过程结合触发器来获取并保存更新记录。这种方法不仅方便了数据管理和审计,也为可能出现的回滚操作提供了便利。

    8500
    领券