MySQL 分組後取最新記錄

8563084發表於2022-04-13

業務場景:取一張表裡面最新的一條資料,以最新的一條資料為基準進行相關業務操作。

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部落格 ” ,連結:http://blog.itpub.net/69989885/viewspace-2886857/,如需轉載,請註明出處,否則將追究法律責任。

相關文章