Mysql

关注公众号 jb51net

关闭
首页 > 数据库 > Mysql > mysql分组后每个取最新的一条记录

mysql分组后如何每个取最新的一条记录

作者:huanhuan_m1

在MySQL中获取每个分组的最新记录可以通过子查询或窗口函数实现,使用子查询时,通过设定时间戳字段确定最新记录,并利用LIMIT子句获取,若MySQL版本支持窗口函数(如MySQL 8.0+),可使用ROW_NUMBER()配合PARTITION BY和ORDER BY实现同样效果

mysql分组后每个取最新的一条记录

在MySQL中,若要从一个分组中获取每组的最新一条记录(通常基于时间戳或其他递增的列),可以使用子查询或者窗口函数(如果MySQL版本支持)。

以下是两种不同的实现方法:

方法1

使用子查询和LIMIT子句

SELECT t1.*
FROM your_table t1
INNER JOIN (
    SELECT id, MAX(timestamp) AS max_timestamp
    FROM your_table
    GROUP BY id
) t2 ON t1.id = t2.id AND t1.timestamp = t2.max_timestamp;

在这个查询中:

方法2

使用窗口函数ROW_NUMBER()(如果MySQL 8.0+)

SELECT id, other_columns, timestamp
FROM (
    SELECT id, other_columns, timestamp,
           ROW_NUMBER() OVER(PARTITION BY id ORDER BY timestamp DESC) as rn
    FROM your_table
) t
WHERE rn = 1;

在这个查询中:

这两种方法都可以确保每个分组中只选择最新的一条记录。

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文