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

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

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

日常开发当中,经常会遇到查询分组数据中最新一条记录,比如统计当前系统每个人最新登录记录、外卖系统统计所有买家最新一次订单记录、图书管理系统借阅者最新借阅书籍记录等等。...今天给大家介绍一下如何实现以上场景SQL写法,希望对大家能有所帮助!...INTO `borrow_record` VALUES (15, 4, 3, '2021-04-15 19:45:00' ); 写法1 直接group by 根据userid ,使用聚合函数max取得最近浏览时间...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分组...val最大值所在行数据 方法一: select a.* from tb a where val = (select max(val) from tb where name = a.name) order...按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

    9.2K30

    sql查询每组数据中时间最大一条

    博主好久没写过后端了,这一写就直接碰到我知识盲区了 我们简单还原一下,这里使用一个表模拟下 表字段如下 表内容如下,我们需求就是取出相同name数据中时间最新一条。...不知道大家首先会想到什么,我第一想到是使用group,当时认为分组不就是group吗,害,easy 然后我就开始了尝试,结果。。。。。 好像不是这么回事呀。。。。...然后开始我错误解决之路。。。。 就在我想要放弃时候,我突然脑子清醒了,开始仔细思考这个需求,不就是把每个名字和最新时间拿出来,然后再根据名字和最新时间直接查,不就是最新记录了吗?...代码 首先第一步,找出每一个name对应最新时间 select name, max(dtime) from test group by name; +------+-----------------...顺便请教下大佬们,有没有效率更高方法,方便的话评论区交流下吧。

    22810

    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

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

    需求   按业务分页,每个业务可以展开显示关联任务信息以及任务最新执行成功信息   任务最新执行成功信息:状态成功,数据日期最大那条执行日志信息;如果数据日期一致,则取最终修改时间最大   后端返回...,也就没法用 LIMIT 1 了     那如何查出每个任务最新执行成功一条记录了?     ...这里也就对应了文章标题:分组每组第 1 条记录     实现方式其实有很多,我这里提供一种,如下     结合索引 idx_status_task_date_modify(exec_status...总结   1、大家写 SQL 时候,一定要多结合执行计划来写 神奇 SQL 之 MySQL 执行计划 → EXPLAIN,让我们了解 SQL 执行过程!   ...1、分组后如何前 N 条     2、分组后如何倒数 N 条

    1.7K40

    mysql中使用group by和order by每个分组中日期最大一行数据,亲测有效

    mysql中使用group by进行分组某一列最大值,我们可以直接使用MAX()函数来实现,但是如果我们要最大值对应ID,那么我们需要取得整行数据。...t.company_name,t.row_key,t.event_subType 执行以上SQL语句确实可以得到每个分组最大create_time,但是经检查发现最大create_time对应event_id...不是同一行数据,如果我们要对event_id进行操作的话,结果肯定是错误。...limit 10000000000) t GROUP BY t.company_name,t.row_key,t.event_subType 从以上SQL中可以看出,我们先对所有的数据按create_time时间降序排列...,然后再分组,那么每个分组中排在最上面的记录就是时间最大记录,对执行结果检查后,确实可以实现我们需求。

    9.4K30

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

    前情回顾   前两天翻自己博客时候,翻到了:记一次有意思 SQL 实现 → 分组每组一条记录   突然意识到好像有续集没写   翻到结尾,果然有个留疑   但我要强调一点:这是我给你们留疑...分组一条记录   我们先来简单回顾下实现方式   1、循环查数据库     逻辑很清晰,实现起来也很简单,但是会循环查数据库,开发规范一般会明确禁止这种写法   2、 GROUP BY 结合 MySQL...再看 GROUP BY 结合 MySQL 函数   我们仔细看看 GROUP BY 结合 MySQL 函数 倒数 5 条结果   我们发现和窗口函数倒数 5 条结果不一致   那到底是哪种方式不对...新特性     窗口函数特别之处在于,它可以将结果集中每一行看作一个单独计算对象,而不是将结果集划分为分组并计算每个分组聚合值 MySQL8 之前,分组之后只能做聚合操作,不能对组中每条记录进行单独操作...MySQL8 及其之后,打破了分组之后只能聚合操作限制,大大方便了我们实现某些特殊场景 ROW_NUMBER 只是窗口函数之一, MySQL 还提供了其他窗口函数,建议大家都去了解下

    1.3K10

    MySQL按日期分组并统计截止当前时间总数实例教程

    MySQL按日期分组并统计截止当前时间总数 建表语句 SET NAMES utf8mb4; SET FOREIGN_KEY_CHECKS = 0; -- -----------------------...int(11) NOT NULL AUTO_INCREMENT COMMENT 'ID编号',   `REG_TIME` datetime(0) NULL DEFAULT NULL COMMENT '时间...`t_reg` VALUES (7, '2019-05-03 05:08:09', 11); SET FOREIGN_KEY_CHECKS = 1; 表结构如下所示:REG_COUNT  表示当天新增用户数...现在需求是这样:按每天分组,查询当天新增用户总数和截止到当前时间新增用户总数,结果如下: SQL语句如下: SELECT     reg_time,     min_total AS '小计...reg_time ) ) AS temp,     ( SELECT @total := 0 ) AS T1 ORDER BY     reg_time; 解释一下:SELECT @total := 0,,这句意思是给临时变量

    4.2K10

    合并求取分组记录一条数据

    有朋友问, 关于电影记录查询SQL,突然不知道如何下手,给个提示参考一下啊,谢谢。...--------------------------------- 当时初略想了想,可以用分组取出来,但写了下又不行,于是按照需求,创建一个表并且插入数据来测试: CREATE TABLE MovieInfo...','007'); INSERT INTO MovieInfo VALUES ('007第三部','电影链接13','007'); GO SELECT * FROM MovieInfo; 先写一个分组并求分组记录大于...,只有1条记录: MovieType Name 007 007第二部 在同事指导下,说ROW_NUMBER() 可以在给记录编号同时指定分组,然后我们分组中编号为1记录即可,先来分组编号...,这个查询需要用到联合查询,统计那些没有分组记录: select Name,Link,MovieType from ( SELECT ROW_NUMBER() OVER(partition by MovieType

    1.2K100

    mysql分组排序limit问题

    mysql分组排序limit问题 作者:matrix 被围观: 7,332 次 发布时间:2018-05-03 分类:零零星星 | 一条评论 » 这是一个创建于 1582 天前主题,其中信息可能已经有所发展或是发生改变...业务要求按照type,city分组,然后各取前面的100条数据输出,网上找到了类似的需求直接sql语句就可以解决。...unsigned NOT NULL DEFAULT '0' COMMENT '1,2', `add_time` int(10) unsigned NOT NULL DEFAULT '0' COMMENT '添加时间...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.8K30

    MySQL一个分组需求

    同事提了个需求,MySQL数据库,想将system1、system2、system3最大版本号对应num取出来,应该怎么写SQL?...select c3, c5 from t_version where c3 = (select max(c3) from t_version) limit 1) 需求理解错了,这个是按照c1、c2、c3最大值来计算...实际上需要根据"system1、system2、system3最大版本号对应num取出来",隐藏含义是,按照"system1、system2、system3"分组,对应最大版本号作为条件,如下所示...,可能一个"字",就代表了不同写法,在具备基础SQL编写能力前提下,还是得多写,才能提升能力。...《参考文献引用格式规则》 《金融知识小科普 - 央行逆回购》 《金融知识小科普 - 做空》 《最近碰到一些问题》 近期热文: 《"红警"游戏开源代码带给我们震撼》 文章分类和索引: 《公众号1100

    41420
    领券