Подтвердить что ты не робот

Выбрать счетчик приращений в mysql

Вот мой запрос mysql

select name from table;

Я хочу выбрать счетчик приращений вдоль имени стороны. Как это сделать. поэтому ожидаемый выход будет

Jay 1
roy 2
ravi 3
ram 4
4b9b3361

Ответ 1

select name,
      @rownum := @rownum + 1 as row_number
from your_table
cross join (select @rownum := 0) r
order by name

Эта часть:

cross join (select @rownum := 0) r

позволяет вводить переменную без необходимости отдельного запроса. Таким образом, первый запрос также можно разбить на два запроса:

set @rownum := 0;

select name,
      @rownum := @rownum + 1 as row_number
from your_table
order by name;

например, когда используется в хранимой процедуре.

Ответ 2

В MySQL 8 и выше вы также можете использовать функцию окна ROW_NUMBER().

SELECT
    name,
    ROW_NUMBER() OVER ()
FROM table

Результат:

Jay  1
roy  2
ravi 3
ram  4

Как показал Юрген d, было бы неплохо поставить ORDER BY для получения детерминированного запроса.

ORDER BY может применяться к запросу и счетчику независимо. Итак:

SELECT
    name,
    ROW_NUMBER() OVER (ORDER BY name DESC)
FROM table
ORDER BY name

даст вам счетчик в порядке убывания.

Результат:

Jay  4
ram  3
ravi 2
roy  1