MySQL ROW_NUMBER() Function

The ROW_NUMBER() function in MySQL is used to returns the sequential number for each row within its partition. It is a kind of window function. The row number starts from 1 to the number of rows present in the partition.

It is to be noted that MySQL does not support the ROW_NUMBER() function before version 8.0, but they provide a session variable that allows us to emulate this function.

Syntax

The following are the basic syntax to use ROW_NUMBER() in MySQL:

Let us demonstrate it using an example.

First, we are going to create a table named "Person" using the below statement:

Next, it is required to add values to this table. Execute the below statement:

Next, execute the SELECT statement to display the records:

We will get the output, as shown below:

MySQL ROW_NUMBER() Function

Now, we can use the ROW_NUMBER() function to assign a sequence number for each record using the below statement:

It will give the following output:

MySQL ROW_NUMBER() Function

Again, we can use the ROW_NUMBER() function to assign a sequence number for each record within a partition using the below statement:

It will give the output as below where two partitions found based on the year (2015 and 2016).

MySQL ROW_NUMBER() Function

MySQL ROW_NUMBER() Using Session Variable

We can emulate the ROW_NUMBER() function to add a row number in increasing order using the session variable.

Execute the below statement that add the row number for each row, which starts from 1:

In this statement, we have first specify the session variable @row_number indicated by @prfix and set its value 0. Then, we have selected the data from the table Person and increases the value for variable @row_number by one to each row.

After the successful execution of the queries, we will get the output as below:

MySQL ROW_NUMBER() Function

Again, we are going to use a session variable as a table and cross join it with source table using the following statement:

We will get the output as below:

MySQL ROW_NUMBER() Function
Next TopicMySQL Cursor




Contact US

Email:[email protected]

MySQL ROW_NUMBER()
10/30