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才需要担心的事,而这更 ...
随机推荐
- mysql那些事(1)手机号与座机号码如何存储
创建mysql数据表的时候,经常会遇到手机号码和座机号码数据的存储问题. 先说手机号码:很多人喜欢使用数字来进行存储,手机号不涉及到运算,并且有时候要带括号,加号之类的字符,有时候还要以0开头.所以, ...
- js表达式和语句趣味题讲解与技术分享
技术分享 问题1 { a: 1 } + 1 // ? ({ a: 1 }) + 1 // ? 1 + { a: 1 } // ? 答案 { a: 1 } + 1 // 1 ({ a: 1 }) + 1 ...
- 基于servlet+filter+反射模拟实现天猫首页的后端
前言:为了深入web原理,本项目没有使用框架,主要描述了从请求到页面展现的思路,详情请见文末的具体项目 一.为什么要用filter?直接servlet实现不就行了 因为天猫这样的项目需要很多servl ...
- js3——表格下拉
<!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...
- css练习一
总体的html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...
- AI如何驱动软件开发?华为云DevCloud 权威专家邀你探讨
近期,国际著名咨询公司Gartner 在一份研究报告中将 "AI-Driven Development" 列为 2019 年的 Top 10 Strategic Technolog ...
- Java 从入门到进阶之路(十二)
在之前的文章我们介绍了一下 Java 类的重写及与重载的区别,本章我们来看一下 Java 类的 private,static,final. 我们在之前引入 Java 类概念的时候是通过商场收银台来引入 ...
- Java修炼——面向对象的三大特征_多态_多态的三个必要条件
多态指的是同一个方法调用,由于对象不同可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1.多态是方法的多态,不是属性的多态(多态与属性无关) 2.多态的存在有三个必要条 ...
- DOM中的获得元素的方式
获取元素的方式:分为俩种: 1.直接获取:直接获取分为三种: a,获取单个元素: function demo1(){ var uid=document.getElementById("use ...
- 使用iCamera 测试MT9M001 130w高分辨率摄像头说明
该摄像头默认分辨率为1280*1024,即不设置任何寄存器参数,只要给该模块提供时钟,就可以输出. 在这里 我们可以通过右侧寄存器栏动态调整各寄存器 观察效果. 0x09寄存器可以调整曝光值,可以根据 ...