
MySQL ROW_NUMBER()
The MySQL ROW_NUMBER()
function is used to assign a unique integer value to each row within a result set. This value is often used to create row numbers or rankings for the rows returned by a query. The ROW_NUMBER()
function is typically used in conjunction with the OVER()
clause to define the order in which rows are numbered.
Here’s the basic syntax of the ROW_NUMBER()
function:
ROW_NUMBER() OVER (PARTITION BY partition_expression ORDER BY sort_expression)
PARTITION BY
: An optional clause that divides the result set into partitions to calculate row numbers separately within each partition.ORDER BY
: Specifies the column or columns by which the rows are ordered to determine the row numbers.
Here’s an example of how to use the ROW_NUMBER()
function:
Suppose you have a table named employees
with columns employee_id
and salary
, and you want to assign a row number to each employee based on their salary, ordered in descending order within each department:
SELECT
employee_id,
salary,
ROW_NUMBER() OVER (PARTITION BY department_id ORDER BY salary DESC) AS row_num
FROM employees;
In this example, the ROW_NUMBER()
function assigns a unique row number to each employee within their respective department based on their salary in descending order.
The result would look something like this:
employee_id | salary | row_num
----------- | ------ | -------
1 | 60000 | 1
2 | 55000 | 2
3 | 62000 | 1
4 | 58000 | 2
5 | 65000 | 1
6 | 59000 | 2
You can use the row numbers for various purposes, such as ranking rows, implementing pagination, or identifying duplicates. The ROW_NUMBER()
function is a valuable tool for such tasks in MySQL.