mysql 8.0以后支持row_number
具体语法
row_number() over (PARTITION by column order by update_time desc) rownum ...
rownum=
根据column分组,按时间倒序。这个时候我们一般都会取时间最近的一条数据,一般用于多条数据中排序选择数据
PARTITION by column 如果column是null,则会返回1。
下面是个例子:
需求是:一个人可以发起多个多个流程,而我们只关心最新的一个流程是什么状态,所以我们用人员表做主表,关联流程表取最新的一条数据。

当然我们也可以获取多条,使用 in

本文介绍了MySQL8.0开始支持的ROW_NUMBER()函数,详细解析了其在数据分组和排序中的使用,特别是在提取最新记录时的作用。通过PARTITION BY和ORDER BY子句,可以实现按特定列分组并按时间倒序排列。示例需求为从人员表和流程表中获取每个人员最新的流程状态,强调了如何利用ROW_NUMBER()选取每组第一条记录。此外,还讨论了获取多条记录的可能性。
5万+

被折叠的 条评论
为什么被折叠?



