mysql 分组获取最新一条记录

2023-05-16

1. 需求

按用户名分组,获取最新插入的一条记录。

2. 模拟数据

-- ----------------------------
-- Table structure for user
-- ----------------------------
DROP TABLE IF EXISTS `user`;
CREATE TABLE `user` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `username` varchar(255) DEFAULT NULL,
  `create_time` datetime DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of user
-- ----------------------------
INSERT INTO `user` VALUES ('1', 'jack', '2020-03-21 16:55:07');
INSERT INTO `user` VALUES ('2', 'jack', '2020-03-21 16:55:18');
INSERT INTO `user` VALUES ('3', 'jack', '2020-03-21 16:55:25');
INSERT INTO `user` VALUES ('4', 'marry', '2020-03-21 16:55:33');
INSERT INTO `user` VALUES ('5', 'marry', '2020-03-21 16:55:37');

需要获取id为 3 和 5 的数据。

3. 方法1

注意limit或distinct是必须的。

select * from (select * from user order by create_time desc limit 10000000) as u GROUP BY u.username;
select * from (select DISTINCT * from user order by create_time desc) as u GROUP BY u.username;

4. 方法2

4.1 实现方法
SELECT u1.*,u2.*
FROM `user` u1 LEFT JOIN `user` u2
ON (u1.username = u2.username AND u1.create_time < u2.create_time) 
WHERE u2.id is NULL;
4.2 方法分析

(1)首先来看,不加u1.create_time < u2.create_time和where条件,查询结果为笛卡尔积;
(2)然后,加上u1.create_time < u2.create_time条件后,就会过滤一部分数据,剩下的数据特征是:左侧<右侧,左侧最大的数据,右侧用null填充。此时数据为:
在这里插入图片描述
(3)最后,右侧为null的即为create_time最大(即最新插入的数据),所以加上WHERE u2.id is NULL后查询结果为:
在这里插入图片描述

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

mysql 分组获取最新一条记录 的相关文章

  • Ubuntu20.4安装QT6

    前言 xff1a 本教程基于Ubuntu20 4 xff0c 在Ubuntu22 4上也测试过 Ubuntu18 04由于GCC版本太低 xff0c 无法正常工作 1 下载QT安装程序 xff1a Open Source Developme
  • sublime安装教程并配置C++环境

    sublime安装教程并配置C 43 43 环境 sublime安装教程并配置C 43 43 环境前言下载sublime配置C 43 43 环境 sublime安装教程并配置C 43 43 环境 前言 最近将电脑重新安装 xff0c 配置s
  • PHP call_user_func_array回调函数 call_user_func_array函数详解

    call user func array PHP官方 call user func array讲解 call user func array PHP 4 gt 61 4 0 4 PHP 5 PHP 7 call user func arra
  • MicroPython 链接WiFi ESP32连WiFi

    这里 gt gt gt gt MicroPython 教程写的非常好强烈推荐 import network import socket import time SSID 61 34 abc 34 修改为你的WiFi名称 PASSWORD 6
  • ESP32 arduino 天气显示 后台可控制 定时消息提示 图片提示

    ESP32 arduino 天气显示 后台可控制 定时消息提示 图片提示 后台操作界面 添加图片显示 添加文字轮播 用到的 H库 include lt WiFi h gt include lt ESPmDNS h gt include lt
  • python subprocess子进程

    import subprocess cmd lx 61 subprocess Popen cmd rtmp encoding 61 34 utf 8 34 shell 61 True sg SystemTray notify 39 开播成功
  • python 获取可用视频列表 和麦克风列表

    import re import subprocess cmd 61 39 ffmpeg 39 39 list devices 39 39 true 39 39 f 39 39 dshow 39 39 i 39 39 dummy 39 de
  • python ffmpeg直播客户端

    import PySimpleGUI as sg import sys import json import os import requests import subprocess import pygame camera import
  • 动物类的继承

    动物类的继承 要求 xff1a 1 在一个名为Test java的文件中定义四个类 xff1a 动物类Animal xff0c 狗类Dog和猫类Cat继承Animal xff0c 测试类Test xff0c 要求编写代码的同时编写简单注释
  • ffmpeg命令操作 合并视频 取图片帧数 获取音频

    ffmpeg安装 点击这里跳转 官方 wins安装的话要添加 环境变量转载点击这里 ffmpeg命令操作 合并视频 取图片帧数 1 获取视频内的图片 ffmpeg i input mp4 r 15 q v 2 f image2 img 04
  • JS 使用 lz-string存储 数据压缩

    浏览器localStorage存储为 5M 然而并不能满足我们的要求 我们可以压缩的是您可以存储的更多数据 好在JS 有lz string 库 引入库 lt script src 61 34 https cdn bootcss com lz
  • USB开发者模式 安卓 adb操作 + 安装

    USB开发者模式 安卓 adb操作 43 安装 这是adb 安装 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 xff01 不是gdb 安装 adb 下载
  • python控制 鼠标移动 pyautogui || PyMouse 自动化

    python控制 鼠标移动 pyautogui PyMouse 自动化 方法1 pyautogui 安装 pip install pyautogui文档基本操作指令 gui PAUSE 61 0 5 每次函数调用后暂停0 5秒 gui FA
  • PHP 图片去除水印 去除logo

    使用插件 ffmpeg 点这里 不使用插件 也可以 lt php function CLEAR ICO filename savename Clear W Clear H Clear X Clear Y filename 61 读取图片名
  • Apache Options指令详解

    Options指令是Apache配置文件中一个比较常见也比较重要的指令 xff0c Options指令可以在Apache服务器核心配置 server config 虚拟主机 配置 virtual host 特定目录配置 directory
  • 基于VC开发epoll/linux 程序指南

    1 概述 3 2 背景 3 3 总体思路 3 4 功能特点 4 5 开发工具和操作系统要求 4 5 1 Windows VC 4 5 2 linux g 43 43 4 6 开发人员要求 5 7 Linux针对epoll移植 5 8 VC工
  • Qt Creator闪退解决办法

    Qt Creator闪退解决办法 Qt 今天突然出现所有插件无法打开的问题 xff0c 找了很久的资料也没解决 只能重装QtCreator 结果一点开QtCreator过不了一分钟 xff0c 就闪退 看到windows记录的问题原因是Qt
  • QScrollArea qss样式设置失效问题

    QScrollArea通过样式改变背景色 遇到设置QScrollArea qss无法生效问题 xff0c 网上没找到合适解决办法 xff0c 查看QScrollArea qt4源码后发现 xff0c 增加如下代码之后 xff0c qss正常
  • Android下打印调试堆栈方法

    打印堆栈是调试的常用方法 xff0c 一般在系统异常时 xff0c 我们可以将异常情况下的堆栈打印出来 xff0c 这样十分方便错误查找 实际上还有另外一个非常有用的功能 xff1a 分析代码的行为 android代码太过庞大复杂了 xff
  • 家里的垃圾移动光猫和tp路由器设置

    第一步 xff1a 将TP初始化 第二步 xff1a 将网线一端插在tpwan口 xff0c 就是与众不同的 第三步 xff1a 将TP的LAN口IP改为192 168 2 1 第四步 xff1a 将TP的WAN口设置为 xff1a 这里先

随机推荐

  • 蓝桥杯单片机闪烁灯控制逻辑分析

    以前的闪烁灯上来就是一片代码 xff0c 总感觉不是很靠谱 xff0c 现在决定写一个比较细致的逻辑分析 首先 xff0c 我们先来贴上开发板的电路图 我们首先先看一下上面的流水灯电路图 xff0c 74HC573锁存器进行流水灯的控制 x
  • idea取消vim模式

    在安装idea时选择了vim编辑模式 xff0c 但是用习惯了eclipse xff0c 总是要拷贝粘贴 xff0c 在idea中一直按ctrl 43 c和ctrl 43 v不起总用 于是想把vim模式关闭掉 方法 xff1a 菜单栏 to
  • atcoder beginner contest 142 Disjoint Set of Common Divisors(质因数分解)

    题目大意 xff1a 找出A B中的所有互质的因数 解题思路 xff1a 首先 xff0c 我们必须找出因数 我们知道对gcd a b 进行因数分解就能得到a xff0c b的所有因数 但是这里需要互质的因数 xff0c 所以我们这里需要对
  • spring管理事务控制的问题

    在使用ssm框架开发项目时 xff0c 事务控制交由spring来管理 xff0c 然而在查看日志时发现一个问题 xff1a org mybatis spring SqlSessionUtils closeSqlSession SqlSes
  • 关于 Debian 系统

    Debian是什么 xff1f Debian 计划是一个致力于创建一个自由操作系统的合作组织 我们所创建的这个操作系统名为Debian 操作系统是使计算机运行的基本程序和工具的集合 xff0c 其中最主要的部分称为内核 xff08 kern
  • btrfs的子卷与快照功能--Linux下备份系统

    关于Btrfs 什么是Btrfs 以及它的性能 可以在许多地方查阅得到 这里要提到的是 Btrfs文件系统本身就是由子卷 Subvolumes 构成的 它的top level是由B tree结构的含有目录 文件和子卷等东西构成的子卷 而在t
  • c# 通过dotPeek调试.net源码

    1 安装dotPeek 2 设置dotPeek xff0c 开启pdb服务 3 设置VS xff0c 添加服务来源 取消仅我的代码 4 测试代码 xff0c 在Console WriteLine 打断点 xff0c 并按F11进入 注意 x
  • 超棒的离线文档阅读器:Zeal

    前言 xff1a 大家写代码的时候总会有些方法或者属性不太清楚 xff0c 这时候我们就会打开浏览器 xff0c 然后找官方api或者直接搜索引擎找对应问题 xff0c 无疑花费了大量的时间 所以 xff0c 你需要一个桌面应用Zeal x
  • UITabBarController标签控制器相关设置

    1 根据下标索引以及控制器索引显示需要显示的控制器 self selectedIndex 61 sender tag 100 self selectedViewController 61 VC 2 设置标签控制器下面的文字 这里是设置系统自
  • Node App: Note命令行应用程序

    此程序需安装npm 第三方库yargs 解析命令行参数 xff0c chalk 输出特定样式的文本 安装版本如下 xff1a chalk 4 1 1 yargs 17 0 1 Note 应用程序支持 4个命令 xff1a add 添加一个n
  • 怎么样用批处理来创建一个txt文件

    怎么样用批处理来创建一个txt文件 cd gt test txt cd 表示切换到当前目录 xff0c 这个命令没有任何作用 gt 是重定向符 xff0c 将当前输出重定向到文件 这个命令创建一个名为test txt的空文件
  • STM32F103寄存器方式点亮LED流水灯

    一 设计思路 本实验使用GPIOB GPIOC GPIOD这3个端口控制LED灯 GPIO 是通用输入输出端口的简称 xff0c 简单来说就是 STM32 可控制的引脚 xff0c STM32 芯片 的 GPIO 引脚与外部设备连接起来 x
  • 一步步CEF(2)之编译ceflicent

    一步步CEF xff08 1 xff09 之编译libcef dll wrapper lib已经提供了c 43 43 的静态库 xff0c 这次要将cefclient编译出来 这里要说明一下 xff0c 如果仅仅将cefclient编译的话
  • Java查找最长字符匹配子串

    1 比较两个字符串 xff0c 短的那一个先判断是否包含在长的字符串中 2 如果不在 xff0c 短的字符串子串长度 1 xff0c 从前往后移判断是否包含 xff0c 不包含继续此操作 public class getMaxStringT
  • Python,Anaconda环境安装配置

    文章目录 Python安装pip包管理 Anaconda安装conda包管理和环境管理Python3与Python2共存 xff08 Anconda3与Anaconda2共存 xff09 Jupyter notebook配置Jupyter
  • SVN提示E230001、E170013解决方案

    解决办法 1 Windows电脑打开cmd命令行 xff0c Mac电脑打开终端 2 输入如下命令 svn ls https 127 0 0 1 8888 svn XXXXXXXX 这里是项目的svn地址 他会提示你输入信息 xff0c 这
  • 记一次Nginx启动失败解决过程(环境:linux Ubuntu 16.04 64bit , ECS for Aliyun)

    背景 今天装了个jpress想弄个博客 xff0c 然后关了Nginx和uwsgi xff0c 启动了tomcat 使用80端口 xff0c 后来直接shutdown sh关闭tomcat后 xff0c 再次启动Nginx报了个错误 Job
  • Windows安装Qt在选择界面卡死解决方案

    Windows安装Qt在选择界面卡死解决方案 很简单的操作 xff1a 就是安装了有道词典 xff0c 退出有道词典 xff0c 再安装Qt 哈哈哈 xff0c 是不是很简单 xff0c 我也是摸索了半天才知道 xff0c 网上说的各种卸载
  • Linux之cmake3.6安装

    1 官网下载cmake 3 6 3 tar gz https cmake org files v3 6 cmake 3 6 3 tar gz 2 解压文件tar xvf cmake 3 6 3 tar gz xff0c 并修改文件权限chm
  • mysql 分组获取最新一条记录

    1 需求 按用户名分组 xff0c 获取最新插入的一条记录 2 模拟数据 span class token comment span span class token comment Table structure for user spa