[MySQL]SELECT文の出力結果に番号を振る

Read More



SELECT文で取得した結果に1から始まる連番を付けたい場合は以下のようにする。

SELECT 
 (@num := @num + 1) AS no, 
 T1.name 
FROM 
 (SELECT @num:=0) AS dmy, 
 T1 
;


キモは変数@numをFROM句内で0に初期化しているところ。
あとはレコードごとに変数を+1している。


これをコマンドで実行すると以下のような感じになる。
+------+------+
| no   | name |
+------+------+
|    1 | hoge |
|    2 | fuga |
|    3 | piyo |
+------+------+





SQLを二つに分けて先に変数の定義だけを済ませておく書き方もある。
SET @num := 0;

SELECT 
 (@num := @num + 1) AS no, 
 T1.* 
FROM 
 T1
;







知ってたらちょっと便利な時もあるかも?