MySQL中没有ROW_NUMBER()这个函数,您可能是想问窗口函数ROW_NUMBER()。
ROW_NUMBER()是一个窗口函数,用于在结果集中为每一行分配一个唯一的连续整数,根据指定的排序顺序。这个整数可以作为行号来使用。
ROW_NUMBER()的基本语法如下:
ROW_NUMBER() OVER (PARTITION BY column1, column2, ... ORDER BY column1, column2, ...)
参数说明:
PARTITION BY
:用于将结果集划分为多个分区,每个分区内的行号可以重复,不同分区内的行号不会重复。ORDER BY
:用于指定每个分区内行的排序顺序,也可以指定跨分区的行的排序顺序。
示例:
假设有一个名为employees的表,包含以下列:id、name、salary、department_id。现在想要查询每个部门中薪水最高的员工,可以使用以下SQL语句:
SELECT id, name, salary, department_id FROM ( SELECT id, name, salary, department_id, ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS rank FROM employees ) t WHERE t.rank = 1;
在这个查询中,首先使用窗口函数ROW_NUMBER()为每个部门的员工分配一个基于薪水的降序排列的行号。然后在外层查询中筛选出每个部门行号为1的员工,即每个部门薪水最高的员工。