MySQL去重保留最大的那条记录(取最新的记录)
以用户登录日志表为例,取用户最近登录的设备
1 SET NAMES utf8mb4;
2 SET FOREIGN_KEY_CHECKS = ;
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() NOT NULL AUTO_INCREMENT,
10 `user_id` int() NOT NULL COMMENT '用户ID',
11 `device_name` varchar() 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= DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
15
16 -- ----------------------------
17 -- Records of t_login_log
18 -- ----------------------------
19 BEGIN;
20 INSERT INTO `t_login_log` VALUES (, , 'iPhone 6s', '2019-07-01 19:20:25');
21 INSERT INTO `t_login_log` VALUES (, , 'vivo x20', '2019-06-28 16:21:11');
22 INSERT INTO `t_login_log` VALUES (, , 'huawei P30', '2019-07-04 19:21:59');
23 INSERT INTO `t_login_log` VALUES (, , 'vivo x20', '2019-06-30 19:22:34');
24 INSERT INTO `t_login_log` VALUES (, , 'vivo x20', '2019-07-04 19:23:07');
25 INSERT INTO `t_login_log` VALUES (, , 'iPad mini', '2019-07-03 19:23:25');
26 INSERT INTO `t_login_log` VALUES (, , 'iPhone 8 Plus', '2019-06-30 19:24:06');
27 INSERT INTO `t_login_log` VALUES (, , 'MI8', '2019-07-03 19:25:00');
28 COMMIT;
29
30 SET FOREIGN_KEY_CHECKS = ;
自连接,取最新的记录
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;
效果


MySQL去重保留最大的那条记录(取最新的记录)的更多相关文章
- oracle分组后取最新的记录
使用Group By来实现取最新记录,需要注意一个问题,如果最大时间相同的数据都会被取出来. PS:即使数据字段类型是timestamp,也会登录相同的时间的数据. select A.* from A ...
- mysql根据某个字段分组根据更新时间获取最新的记录
我现在有一种统计表,要根据一个字段分组然后根据更新时间,每个分组获取最新的一条记录.命名感觉挺简单的一个需求,然而没什么思路,当然是问度娘了. 度娘的答案很统一,然而都不管用,都是报错的,不知道是不是 ...
- mysql语句:批量更新多条记录的不同值[转]
mysql语句:批量更新多条记录的不同值 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 帮助 1 UPDATE mytable SET myfield = 'value' WHERE ...
- mysql 查询每个分组前N条记录
mysql 查询每个分组前N条记录 假设存在表movie, 有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...
- MySql多表关联,根据某列取前N条记录问题
近来遇到一个问题:“MySql多表关联,根据某列取前N条记录”. 刚开始一直在想,SQL语句是否可以做到直接查询出来,但几经折磨,还是没能写出SQL语句,-------如果有大牛的话,望指点迷津.我把 ...
- Mysql复制一条或多条记录并插入表|mysql从某表复制一条记录到另一张表
Mysql复制一条或多条记录并插入表|mysql从某表复制一条记录到另一张表 一.复制表里面的一条记录并插入表里面 ① insert into article(title,keywords,de ...
- mysql支持跨表删除多条记录
在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录. 假定我们有两张表:Product表和 ...
- MYSQL性能优化的最佳20+条经验
MYSQL性能优化的最佳20+条经验 2009年11月27日 陈皓 评论 148 条评论 131,702 人阅读 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数 ...
- 使用ThinkPHP开发中MySQL性能优化的最佳21条经验
使用ThinkPHP开发中MySQL性能优化的最佳21条经验讲解,目前,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更 ...
随机推荐
- linux虚拟机中各服务端口及配置文件路径
查询端口状况命令: netstat -an| grep 端口号 查询服务状态(服务是否开启)命令:systemctl status 服务名 开启服务命令:systemctl start 服务名 ...
- Linux下利用nginx实现负载均衡
linux下利用nginx实现负载均衡 前提条件: 1,安装好jdk 2,安装好tomcat和nginx(可以参考我前两篇文章) 满足前提条件后,要用nginx实现负载均衡,主要是靠配置nginx的配 ...
- 获取JVM转储文件的Java工具类
在上期文章如何获取JVM堆转储文件中,介绍了几种方法获取JVM的转储文件,其中编程方法是里面唯一一个从JVM内部获取的方法.这里就不演示了其他方法获取正在运行的应用程序的堆转储,重点放在了使用编程来获 ...
- 安装部署MySQL主从复制
Environment:{ CentOS 7 两台 安装MySQL(mariadb mariadb-server) } !!!关闭防火墙SELinux 1.查看版本信息 2.启动mysql服务,查 ...
- 白话OAuth2用户认证及鉴权标准流程
一.OAuth2需求场景 在说明OAuth2需求及使用场景之前,需要先介绍一下OAuth2授权流程中的各种角色: 资源拥有者(User) - 指应用的用户 认证服务器 (Authorization S ...
- 带着canvas去流浪系列之七 绘制水球图
[摘要] 用原生canvasAPI实现百度echarts 示例代码托管在:http://www.github.com/dashnowords/blogs 一. 任务说明 使用原生canvasAPI绘制 ...
- STM32F4 阿波罗寄存器点亮LED灯
学习步骤: 使用寄存器点亮LED灯,需要进行如下的步骤,LED灯属于外设部分,首先需要开启外设的时钟使能,然后LED灯是PB1口,(芯片是正点原子的阿波罗),接着定义GPIOB口的输出模式,为上拉.推 ...
- 华为OSPF与ACL综合应用实例讲解
OSPF与ACL综合应用实例讲解 项目案例要求: 1.企业内网运行OSPF路由协议,区域规划如图所示:2.财务和研发所在的区域不受其他区域链路不稳定性影响:3.R1.R2.R3只允许被IT登录管理:4 ...
- python解析ifconfig 输出成字典
有个需求需要将ifcofig输出解析出来,这里将写的整理出来.方便后续使用. eth0 Link encap:Ethernet HWaddr 00:50:53:b2:23:e6 inet addr:1 ...
- CSS_跳动的心
详细教程CSS3 <!DOCTYPE html> <html> <head> <meta charset="utf-8"> < ...