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

MYSQL学习:GROUP BY分组最新一条记录

日常开发当中,经常会遇到查询分组数据中最新一条记录,比如统计当前系统每个人最新登录记录、外卖系统统计所有买家最新一次订单记录、图书管理系统借阅者最新借阅书籍记录等等。...今天给大家介绍一下如何实现以上场景SQL写法,希望对大家能有所帮助!...INTO `bookinfo` VALUES (5, 'ISBN005', '物理'); INSERT INTO `bookinfo` VALUES (13, 'ISBN006', '读者'); -- 借阅记录表...b on b.id=a.book_id INNER JOIN userinfo c on c.uid=a.user_id GROUP BY a.user_id -- 说明: 这样会存在获取书籍名称错乱情况..., -- 因为使用聚合函数获取书籍名称,不一定是对应用户 -- 最新浏览记录对应书籍名称 写法2 采用子查询方式,获取借阅记录表最近浏览时间作为查询条件 select a.user_id ,c.uname

19.8K20

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

在数据库开发过程中,我们要为每种类型数据取出前几条记录,或者是最新、最小、最大等等,这个该如何实现呢,本文章向大家介绍如何实现mysql分组最大(最小、最新、前N条)条记录。...5, 'b5'); 数据表如下: 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分组...按name分组val最小值所在行数据 方法一: select a.* from tb a where val = (select min(val) from tb where name = a.name...: name val memo a 1 a1 b 1 b1 按name分组第一次出现行所在数据  sql如下: select a.* from tb a where val = (select...top 1 val from tb where name = a.name) order by a.name //这个是sql server //mysql应该是 select a.* from tb

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

    mysql分组后最新一条数据_mysql分组最大时间

    大家好,又见面了,我是你们朋友全栈君。 mysql分组后最新一条记录,下面两种方法. 一种是先筛选 出最大和最新时间,在连表查询....一种是先排序,然后在次分组查询(默认第一条),就是最新一条数据了(此条错误,分组mysql官方文档说明 是随机选择分组一条,所以这么操作是不确定),一般时间和主键id是正向关系,比如id大插入时间就会比较大...t_assistant_article where id in(select max(id) from t_assistant_article GROUP BY base_id) 下面是测试sql, 感谢评论区留言...,2013年写,今天登录了网站发现了这个问题,抱歉!...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

    11K101

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

    首先,我们知道MySQL数据库分组功能主要是通过GROUP BY关键字来实现,而且GROUP BY通常得配合聚合函数来使用用,比如说分组之后你可以计数(COUNT),求和(SUM),求平均数(AVG)...而业务系统官网上需要滚动展示一些热门资讯信息列表(浏览量越大代表越热门),而且每个类别的相关资讯记录至多显示3条,换句话:“按照资讯分类分组每组前3条资讯信息列表”。...资讯分类 资讯信息记录表示例数据如下: ? 资讯信息记录表 需求 :热门资讯信息列表且每个类别只前3条。...我们想在查询每条资讯记录时要是能查出其所在类型排名就好了,然后根据排名字段进行过滤就好了。这时候我们就想到了子查询,而且MySQL是可以实现这样功能子查询。...假如以本文上面的示例数据说明:就是在计算每个资讯信息记录时,多计算出一列作为其“排名”字段,然后“排名”字段小于等于3记录即可。

    26.5K32

    oracle修改sequence最大最小值_oracle最大值记录

    maxvalue:可选子句,决定序列生成最大值。 start: 可选子句,制定序列开始位置。默认情况下,递增序列起始值为minvalue,递减序列起始值为maxvalue。...cycle: 可选关键字,当序列到达最大值(maxvalue)或者最小值(minvalue)时可复位并继续下去。如果达到极限。生成下一个数据将分别是最小值或者最大值。...如果使用NO CYCLE 选项,那么在序列达到最大值或最小值之后,如果再试图获取下一个值将返回一个错误。 order: 该选项可以保证生成序列值是按顺序产生。...例子: create sequence seq_dept maxvalue 99–序列产生产生最大值。...例如: select seq_dept from dual; 当sequence值到达了最大值之后,若选择了cycle属性,那么会复位到最小值继续增加依次循环。

    2.5K60

    MySQL获取分组TOP 1和TOP N记录

    有时会碰到一些需求,查询分组最大值,最小值所在整行记录或者分组top n行记录,在一些别的数据库可能有窗口函数可以方面的查出来,但是MySQL没有这些函数,没有直接方法可以查出来,可通过以下方法来查询...李四 | 英语 | 50 | | 9 | 王五 | 英语 | 89 | +----+--------+--------+-------+ TOP 1 查询每门课程分数最高学生以及成绩...| | 张三 | 英语 | 90 | +--------+--------+-------+ 3 rows in set (0.00 sec) TOP N N>=1 查询每门课程前两名学生以及成绩...1、使用union all 如果结果集比较小,可以用程序查询单个分组结果后拼凑,也可以使用union all root:test> (select name,course,score from test1

    2.8K41

    mysql分组每组前几条数据

    ), (9,'name9',2), (10,'name10',2), (11,'name11',3), (12,'name12',3); 第二步:查询 需求:按照p_code字段对product表进行分组每组前两条数据...p_code 'tmp_code' from product order by p_code) a where a.tmp_num<6 sql解释:@tmp_code:=p_code表示把p_code值临时赋值给...@tmp_code,IF(@tmp_code=p_code,@tmp_num:=@tmp_num+1,@tmp_num:=0)表示如果p_code值等于@tmp_code的话,@tmp_num自增1,...这样我们就可以通过'tmp_num'这个字段来获取到每一组前几条数据 第三步:需求完美解决 查询结果: ?...各位大佬如果有更好,更加高效方法希望可以留言交流下,谢谢 参考: https://blog.csdn.net/MTner/article/details/98336846 https://jingyan.baidu.com

    6.7K20

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

    前情回顾   前两天翻自己博客时候,翻到了:记一次有意思 SQL 实现 → 分组每组第一条记录   突然意识到好像有续集没写   翻到结尾,果然有个留疑   但我要强调一点:这是我给你们留疑...分组第一条记录   我们先来简单回顾下实现方式   1、循环查数据库     逻辑很清晰,实现起来也很简单,但是会循环查数据库,开发规范一般会明确禁止这种写法   2、 GROUP BY 结合 MySQL...前N条或倒数N条   我们回到标题,分组排序后,如何前N条记录或倒数N条记录   循环查数据库   1、先批量查询 task_id   2、再根据 task_id 逐个去查 t_task_exec_log...再看 GROUP BY 结合 MySQL 函数   我们仔细看看 GROUP BY 结合 MySQL 函数 倒数 5 条结果   我们发现和窗口函数倒数 5 条结果不一致   那到底是哪种方式不对...新特性     窗口函数特别之处在于,它可以将结果集中每一行看作一个单独计算对象,而不是将结果集划分为分组并计算每个分组聚合值 MySQL8 之前,分组之后只能做聚合操作,不能对组中每条记录进行单独操作

    1.3K10

    mysql 获取分组中最新记录SQL写法示例 select group by order by

    on concat(a.biz_id,a.gmt_create) = concat(b.biz_id,b.gmt_create) I have a mysql...t.from_user_id, t.date_sent) ORDER BY t.date_sent DESC 参考资料 https://stackoverflow.com/questions/8556283/mysql-select-group-by-order...---- Kotlin开发者社区 专注分享 Java、 Kotlin、Spring/Spring Boot、MySQL、redis、neo4j、NoSQL、Android、JavaScript、React...Flink等 分布式通信机制:Dubbo、RPC调用、共享远程数据、消息队列等 消息队列MQ:Kafka、MetaQ,RocketMQ 怎样打造高可用系统:基于硬件、软件中间件、系统架构等一些典型方案实现...:HAProxy、基于Corosync+Pacemaker高可用集群套件中间件系统 Mycat架构分布式演进 大数据Join背后难题:数据、网络、内存和计算能力矛盾和调和 Java分布式系统中高性能难题

    2.6K30

    mysql数据库中int类型最大值_mysql自增主键最大值

    大家好,又见面了,我是你们朋友全栈君。 1、mysql中int(11)中11代表显示宽度 整数列显示宽度,与mysql需要用多少个字符来显示该列数值,与该整数需要存储空间大小都没有关系。...a、int是整型,(11)是指显示字符宽度,最大为255。 b、int(11)是记录行数id,插入10条记录,那么它就显示00000000001 ~~~00000000010。...c、当字符位数超过11,它也只显示11位。 d、如果没有加未满11位就前面加0参数,就不会在前面加0。 e、如果没有给它指定显示宽度,MySQL会为它指定一个默认值。...f、INT(3)会占用4个字节存储空间,并且允许最大值也不会是999,而是INT整型所允许最大值。...2、mysql有五种整型数据列类型,即TINYINT,SMALLINT,MEDIUMINT,INT和BIGINT。 a、区别是取值范围不同,存储空间不相同。

    6.2K20

    mysql分组排序limit问题

    mysql分组排序limit问题 作者:matrix 被围观: 7,332 次 发布时间:2018-05-03 分类:零零星星 | 一条评论 » 这是一个创建于 1582 天前主题,其中信息可能已经有所发展或是发生改变...业务要求按照type,city分组,然后各取前面的100条数据输出,网上找到了类似的需求直接sql语句就可以解决。...add_time desc ) as b on b.id = a.id where b.rownum>=100 order by b.type,b.city ; 说明: 头部事先声明变量 row 用于统计指定分组下出现次数..., city和type是分组条件 核心在于inner join临时表操作,其中使用变量操作追加rownum字段 如果变量city,type值等同于临时表同名字段则该行数据排序下标row++,否则为...1 @city:=city as city , @type:=type as type 表示给每行数据字段值赋给变量 之后在inner join内联表 之后使用自定义rownum字段b.rownum

    1.8K30

    记一次有意思 SQL 实现 → 分组每组第一条记录

    这里也就对应了文章标题:分组每组第 1 条记录     实现方式其实有很多,我这里提供一种,如下     结合索引 idx_status_task_date_modify(exec_status...  新增任务最新执行成功记录表   一般而言,大数据量日志表是不参与复杂查询,所以单独拎出来一个表,专门记录任务最新执行成功信息   一个任务最多只有一条记录,不存在则直接插入表中,存在则根据 data_date...DESC,modify_time DESC 与表中记录做比较,看是否需要进行表中记录更新   因为一个任务最多只有一条记录,那么 t_task_latest_exec_log 数据量是 小于等于 t_task...总结   1、大家写 SQL 时候,一定要多结合执行计划来写 神奇 SQL 之 MySQL 执行计划 → EXPLAIN,让我们了解 SQL 执行过程!   ...1、分组后如何前 N 条     2、分组后如何倒数 N 条

    1.7K40

    MongoDB 按照某个字段分组,并按照分组记录数降序排列

    以下是一个示例查询: db.collection.aggregate([ { $group: { _id: "$quoteId", // 按照quoteId字段进行分组...count: { $sum: 1 } // 统计每个分组记录数 } }, { $sort: { count: -1 // 按照记录数降序排序 } } ]...) 在这个查询中: group阶段将文档按照quoteId字段进行分组,并使用sum操作符统计每个分组记录数,保存为count字段。...$sort阶段按照count字段降序排序,这样最多记录分组将排在前面。 你需要将db.collection替换为你集合名称。 为什么会突然间学这个用法呢?...因为看到开发在mysql表里面某个字段长度设置是2048,有其他开发提出了疑问,会不会有这么长,然后我就查了一下现有数据去确认一下大概字符长度。

    20010
    领券