以用户登录日志表为例,取用户最近登录的设备

  1. 1 SET NAMES utf8mb4;
  2. 2 SET FOREIGN_KEY_CHECKS = ;
  3. 3
  4. 4 -- ----------------------------
  5. 5 -- Table structure for t_login_log
  6. 6 -- ----------------------------
  7. 7 DROP TABLE IF EXISTS `t_login_log`;
  8. 8 CREATE TABLE `t_login_log` (
  9. 9 `id` int() NOT NULL AUTO_INCREMENT,
  10. 10 `user_id` int() NOT NULL COMMENT '用户ID',
  11. 11 `device_name` varchar() COLLATE utf8mb4_bin NOT NULL COMMENT '登录设备',
  12. 12 `login_time` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '登录时间',
  13. 13 PRIMARY KEY (`id`)
  14. 14 ) ENGINE=InnoDB AUTO_INCREMENT= DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin;
  15. 15
  16. 16 -- ----------------------------
  17. 17 -- Records of t_login_log
  18. 18 -- ----------------------------
  19. 19 BEGIN;
  20. 20 INSERT INTO `t_login_log` VALUES (, , 'iPhone 6s', '2019-07-01 19:20:25');
  21. 21 INSERT INTO `t_login_log` VALUES (, , 'vivo x20', '2019-06-28 16:21:11');
  22. 22 INSERT INTO `t_login_log` VALUES (, , 'huawei P30', '2019-07-04 19:21:59');
  23. 23 INSERT INTO `t_login_log` VALUES (, , 'vivo x20', '2019-06-30 19:22:34');
  24. 24 INSERT INTO `t_login_log` VALUES (, , 'vivo x20', '2019-07-04 19:23:07');
  25. 25 INSERT INTO `t_login_log` VALUES (, , 'iPad mini', '2019-07-03 19:23:25');
  26. 26 INSERT INTO `t_login_log` VALUES (, , 'iPhone 8 Plus', '2019-06-30 19:24:06');
  27. 27 INSERT INTO `t_login_log` VALUES (, , 'MI8', '2019-07-03 19:25:00');
  28. 28 COMMIT;
  29. 29
  30. 30 SET FOREIGN_KEY_CHECKS = ; 

自连接,取最新的记录

  1. 1 SELECT * FROM t_login_log ORDER BY user_id;
  2. 2
  3. 3 SELECT
  4. 4 t1.*
  5. 5 FROM t_login_log t1
  6. 6 LEFT JOIN t_login_log t2 ON t1.user_id = t2.user_id AND t1.login_time < t2.login_time
  7. 7 WHERE t2.id IS NULL; 

效果

MySQL去重保留最大的那条记录(取最新的记录)的更多相关文章

  1. oracle分组后取最新的记录

    使用Group By来实现取最新记录,需要注意一个问题,如果最大时间相同的数据都会被取出来. PS:即使数据字段类型是timestamp,也会登录相同的时间的数据. select A.* from A ...

  2. mysql根据某个字段分组根据更新时间获取最新的记录

    我现在有一种统计表,要根据一个字段分组然后根据更新时间,每个分组获取最新的一条记录.命名感觉挺简单的一个需求,然而没什么思路,当然是问度娘了. 度娘的答案很统一,然而都不管用,都是报错的,不知道是不是 ...

  3. mysql语句:批量更新多条记录的不同值[转]

    mysql语句:批量更新多条记录的不同值 mysql更新语句很简单,更新一条数据的某个字段,一般这样写: 帮助 1 UPDATE mytable SET myfield = 'value' WHERE ...

  4. mysql 查询每个分组前N条记录

    mysql 查询每个分组前N条记录 假设存在表movie,  有字段 id, part(地区), mcount(观看次数) 现查询每个地区观看次数最多的3部movie, 则表 ###id虽未存在gro ...

  5. MySql多表关联,根据某列取前N条记录问题

    近来遇到一个问题:“MySql多表关联,根据某列取前N条记录”. 刚开始一直在想,SQL语句是否可以做到直接查询出来,但几经折磨,还是没能写出SQL语句,-------如果有大牛的话,望指点迷津.我把 ...

  6. Mysql复制一条或多条记录并插入表|mysql从某表复制一条记录到另一张表

    Mysql复制一条或多条记录并插入表|mysql从某表复制一条记录到另一张表 一.复制表里面的一条记录并插入表里面    ① insert into article(title,keywords,de ...

  7. mysql支持跨表删除多条记录

    在Mysql4.0之后,mysql开始支持跨表delete. Mysql可以在一个sql语句中同时删除多表记录,也可以根据多个表之间的关系来删除某一个表中的记录. 假定我们有两张表:Product表和 ...

  8. MYSQL性能优化的最佳20+条经验

    MYSQL性能优化的最佳20+条经验 2009年11月27日 陈皓 评论 148 条评论  131,702 人阅读 今天,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数 ...

  9. 使用ThinkPHP开发中MySQL性能优化的最佳21条经验

    使用ThinkPHP开发中MySQL性能优化的最佳21条经验讲解,目前,数据库的操作越来越成为整个应用的性能瓶颈了,这点对于Web应用尤其明显.关于数据库的性能,这并不只是DBA才需要担心的事,而这更 ...

随机推荐

  1. mysql那些事(1)手机号与座机号码如何存储

    创建mysql数据表的时候,经常会遇到手机号码和座机号码数据的存储问题. 先说手机号码:很多人喜欢使用数字来进行存储,手机号不涉及到运算,并且有时候要带括号,加号之类的字符,有时候还要以0开头.所以, ...

  2. js表达式和语句趣味题讲解与技术分享

    技术分享 问题1 { a: 1 } + 1 // ? ({ a: 1 }) + 1 // ? 1 + { a: 1 } // ? 答案 { a: 1 } + 1 // 1 ({ a: 1 }) + 1 ...

  3. 基于servlet+filter+反射模拟实现天猫首页的后端

    前言:为了深入web原理,本项目没有使用框架,主要描述了从请求到页面展现的思路,详情请见文末的具体项目 一.为什么要用filter?直接servlet实现不就行了 因为天猫这样的项目需要很多servl ...

  4. js3——表格下拉

    <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8" ...

  5. css练习一

    总体的html<!DOCTYPE html><html lang="en"><head> <meta charset="UTF- ...

  6. AI如何驱动软件开发?华为云DevCloud 权威专家邀你探讨

    近期,国际著名咨询公司Gartner 在一份研究报告中将 "AI-Driven Development" 列为 2019 年的 Top 10 Strategic Technolog ...

  7. Java 从入门到进阶之路(十二)

    在之前的文章我们介绍了一下 Java 类的重写及与重载的区别,本章我们来看一下 Java 类的 private,static,final. 我们在之前引入 Java 类概念的时候是通过商场收银台来引入 ...

  8. Java修炼——面向对象的三大特征_多态_多态的三个必要条件

    多态指的是同一个方法调用,由于对象不同可能会有不同的行为,现实生活中,同一个方法,具体实现会完全不同. 多态的要点: 1.多态是方法的多态,不是属性的多态(多态与属性无关) 2.多态的存在有三个必要条 ...

  9. DOM中的获得元素的方式

    获取元素的方式:分为俩种: 1.直接获取:直接获取分为三种: a,获取单个元素: function demo1(){ var uid=document.getElementById("use ...

  10. 使用iCamera 测试MT9M001 130w高分辨率摄像头说明

    该摄像头默认分辨率为1280*1024,即不设置任何寄存器参数,只要给该模块提供时钟,就可以输出. 在这里 我们可以通过右侧寄存器栏动态调整各寄存器 观察效果. 0x09寄存器可以调整曝光值,可以根据 ...