MySQL去重保留最大的那條記錄(取最新的記錄)

2021-10-09 09:02:14 字數 2295 閱讀 7224

以使用者登入日誌表為例,取使用者最近登入的裝置

1 set names utf8mb4;

2 set foreign_key_checks = 0;

3 4 -- ----------------------------

5 -- table structure for t_login_log

6 -- ----------------------------

7 drop table if exists `t_login_log`;

8 create table `t_login_log` (

9 `id` int(11) not null auto_increment,

10 `user_id` int(11) not null comment '使用者id',

11 `device_name` varchar(32) collate utf8mb4_bin not null comment '登入裝置',

12 `login_time` datetime not null default current_timestamp on update current_timestamp comment '登入時間',

13 primary key (`id`)

14 ) engine=innodb auto_increment=9 default charset=utf8mb4 collate=utf8mb4_bin;

15 16 -- ----------------------------

17 -- records of t_login_log

18 -- ----------------------------

19 begin;

20 insert into `t_login_log` values (1, 1121, 'iphone 6s', '2019-07-01 19:20:25');

21 insert into `t_login_log` values (2, 2120, 'vivo x20', '2019-06-28 16:21:11');

22 insert into `t_login_log` values (3, 1607, 'huawei p30', '2019-07-04 19:21:59');

23 insert into `t_login_log` values (4, 2120, 'vivo x20', '2019-06-30 19:22:34');

24 insert into `t_login_log` values (5, 2120, 'vivo x20', '2019-07-04 19:23:07');

25 insert into `t_login_log` values (6, 1121, 'ipad mini', '2019-07-03 19:23:25');

26 insert into `t_login_log` values (7, 1607, 'iphone 8 plus', '2019-06-30 19:24:06');

27 insert into `t_login_log` values (8, 1970, 'mi8', '2019-07-03 19:25:00');

28 commit;

29 30 set foreign_key_checks = 1;

自連線,取最新的記錄

1 select * from t_login_log order by user_id;

2 3 select

4 t1.*

5 from t_login_log t1

6 left join t_login_log t2 on t1.user_id = t2.user_id and t1.login_time < t2.login_time

7 where t2.id is null;

效果

阿里雲k8s實戰手冊 [阿里雲cdn排坑指南]cdn

ecs運維指南

devops實踐手冊

hadoop大資料實戰手冊

knative雲原生應用開發指南

oss 運維實戰手冊

雲原生架構***

zabbix企業級分布式監控系統原始碼文件

10g大廠面試題戳領

MYSQL 如何查詢 修改最大日期的那條記錄

參考資料 更新資料 update product info as t inner join select product id,max update date update date from product info where product id 830group byproduct id t...

mysql中的去重

關於 distinct 關鍵字 select distinct uid,name from zzzz 其真正的意思是去掉重複的記錄,先select uid,name from zzzz 然後過濾掉重覆記錄,保留第一條記錄。所以,dinstinct的結果取決於你查詢的字段,它並不是過濾掉某個字段。如果...

關於 mysql 查詢重複資料去重並且保留一條資料

比如我的資料如下圖所示,查詢目的是查詢出main重複的,並且保留main分組中score最大的一條資料,也參考了很多答案但是並不理想,後來在技術群裡請教了一位大神 最後的sql貼出來 select id,main,score from select id,score main,if pmain ma...