MYSQL-去重並且取時間最新

題目:

查詢出每個學生的每門科目成績,如果存在多條就取update_time最新的那條

CREATE TABLE `tb_score` (
  `id` int(11) NOT NULL,
  `user_id` varchar(20) NOT NULL,
  `user_name` varchar(50) NOT NULL,
  `menu_name` varchar(50) NOT NULL,
  `score` double(5,2) NOT NULL,
  `update_time` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_0900_ai_ci;

解答 

select a.*,b.score from (
	select user_id,user_name,menu_name,max(update_time) time
	from tb_score a group by user_id,user_name,menu_name
) a 
left join tb_score b on a.user_id=b.user_id and a.menu_name=b.menu_name and a.time=b.update_time
order by a.user_id

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章