Порядковый номер строки в sql запросе

26
16 октября 2018, 20:40

Подскажите есть ли в sql команда вернет порядковый номер нужной строки из всего запроса?

допустим запрос вида SELECT * FROM table ORDER BY id ASC возвращает

id|name
1 |tenth
2 |first
3 |eighth
...
8 |third
9 |ninth
10|second

хотелось бы получить порядковый номер в выводе(именно номер а не id) допустим строки name == 'third' есть ли такая возможность? или необходимо делать весь запрос и уже из результата получать порядковый номер?

что-то вроде:

SELECT *** FROM table WHERE name = 'third' ORDER BY id ASC
Answer 1

Для MySQL версии 8.0+ можно воспользоваться оконными функциями:

SELECT row_number() OVER w as id, name 
FROM table_name 
WINDOW w AS (ORDER BY name)
WHERE name = 'third';

или:

SELECT row_number() OVER (ORDER BY name) as id, name 
FROM table_name 
WHERE name = 'third';

DB Fiddle...