Running numbers in SQL

I have an SQL statement like this:

SELECT name FROM users WHERE deleted = 0;

How to create a result set with a running number in the first row? Thus, the result will look like this:

1 Name_1
2 Name_3
3 Name_12
4 Name_15
...
+3
source share
3 answers

In Oracle, SQL Serverand PostreSQL 8.4:

SELECT  ROW_NUMBER() OVER (ORDER BY name)
FROM    users
WHERE   deleted = 0

In MySQL:

SELECT  @r := @r + 1 AS rn
FROM    (
        SELECT  @r := 0
        ) vars, users
WHERE   deleted = 0
ORDER BY
        name

In PostgreSQL 8.3:

SELECT  num, (arr[num]).*
FROM    (
        SELECT  generate_series(1, array_upper(arr, 1)) AS num, arr
        FROM    (
                SELECT  ARRAY
                        (
                        SELECT  users
                        FROM    users
                        ORDER BY
                                name
                        ) AS arr
                ) q
        ) q2
+9
source

In SQL Server 2005, you can use row_number () over (order by yourColumn), for example:

SELECT row_number() OVER(ORDER BY myColumn) FROM myTable
+3
source

Source: https://habr.com/ru/post/1722330/


All Articles