MySQLで行番号を表示したいとき。OracleにはROW_NUMBERってのがあるので、似たような機能がないか探したところ面白い方法を見つけた。 良く紹介されているのは、ユーザー変数を利用して、 set @i:=0; select @i:=@i+1 as rownum,user_id from user; という感じで、2つSQLを発行するパターン。 これを1つのSQLで行う方法があった。 select @i:=@i+1 as rownum,user_id from (select @i:=0) as dummy,user; サブクエリでユーザー変数を初期化している。 こんな発想はなかったなぁ。素晴らしい。 これでそれっぽく行番号を取得できるのだが、 MySQLのサイトの8.4. ユーザによって定義された変数にて、以下の内容があった。 ユーザ変数の評価順序は定義されておらず、与えられたク