可以通过以下两种方法实现:
使用子查询可以将每组中的最后一条记录检索出来。具体步骤如下:
首先,根据分组依据将数据进行分组,并使用MAX函数获取每组中的最后一条记录的标识列的最大值。然后,在主查询中,使用这些最大值作为筛选条件,从原始表中检索出最后一条记录。
示例查询语句:
SELECT t1.*
FROM your_table t1
INNER JOIN (
SELECT group_column, MAX(id) AS max_id
FROM your_table
GROUP BY group_column
) t2 ON t1.group_column = t2.group_column AND t1.id = t2.max_id;
上述示例中,your_table是原始表,group_column是分组依据的列,id是标识列。
MySQL 8.0及以上版本支持窗口函数,通过使用ROW_NUMBER()函数和PARTITION BY子句,可以为每个分组中的记录分配一个序号。然后,在主查询中,选择序号为1的记录,即每组中的最后一条记录。
示例查询语句:
SELECT *
FROM (
SELECT *,
ROW_NUMBER() OVER (PARTITION BY group_column ORDER BY id DESC) AS row_num
FROM your_table
) t
WHERE t.row_num = 1;
上述示例中,your_table是原始表,group_column是分组依据的列,id是标识列。
以上是两种常用的方法来快速检索MySQL中每组中的最后一条记录。对于MySQL的其他问题,欢迎继续提问。
领取专属 10元无门槛券
手把手带您无忧上云