ITPub博客

首页 > 数据库 > MySQL > MySQL 分组后取最新记录

MySQL 分组后取最新记录

原创 MySQL 作者:8563084 时间:2022-04-13 12:07:48 0 删除 编辑

业务场景:取一张表里面最新的一条数据,以最新的一条数据为基准进行相关业务操作。

CREATE TABLE `t_biz` (
  `id` int NOT NULL AUTO_INCREMENT,
  `name` varchar(100) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  `create_date` varchar(10) COLLATE utf8mb4_unicode_ci DEFAULT NULL,
  PRIMARY KEY (`id`)) ;INSERT INTO t_biz (id, name, create_date) VALUES(1, 'Tom', '2022-01-21');INSERT INTO t_biz (id, name, create_date) VALUES(2, 'Tom', '2022-01-02');INSERT INTO t_biz (id, name, create_date) VALUES(3, 'Cat', '2022-02-01');INSERT INTO t_biz (id, name, create_date) VALUES(4, 'Cat', '2022-02-02');INSERT INTO t_biz (id, name, create_date) VALUES(5, 'Cat', '2022-02-03');

5.7

  • 相关子查询
select m.id, m.name,m.create_date  
from t_biz m where not EXISTS (select 1 from t_biz i where i.name=m.name and m.create_date<i.create_date)
  • 关联查询
select m.id, m.name,m.create_date  
from t_biz m , (select i.name, max(i.create_date) create_date from t_biz i group by i.name ) iwhere m.name =i.name and m.create_date =i.create_date

8.0

  • rank 函数
select m.id, m.name,m.create_date  
from (select id, name,create_date, rank() over(partition by name order by create_date desc) rank_seq  from t_biz ) m  
 where m.rank_seq = 1;



来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69989885/viewspace-2886857/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: Tomcat异常讲解
下一篇: flink定时读取mysql
请登录后发表评论 登录
全部评论

注册时间:2020-12-02

  • 博文量
    27
  • 访问量
    61170