web-dev-qa-db-ja.com

mysqlでインクリメントカウンターを選択する

ここに私のmysqlクエリがあります

select name from table;

サイド名に沿って増分カウンターを選択したい。これを行う方法。期待される出力は

Jay 1
roy 2
ravi 3
ram 4
33
iJade
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

別のクエリを必要とせずに変数を導入することができます。したがって、最初のクエリは次のような2つのクエリに分割することもできます。

set @rownum := 0;

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

たとえば、ストアドプロシージャで使用する場合。

95
juergen d

MySQL 8以降では、 ROW_NUMBER() Window function も使用できます。

SELECT
    name,
    ROW_NUMBER() OVER ()
FROM table

結果:

Jay  1
roy  2
ravi 3
ram  4

Juergen 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
3
user11415449