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的員工,即每個部門薪水最高的員工。