ポイントは ■ MySQLのユーザー変数でSETを使わずSQL中でユーザー変数の型を定義する ユーザー変数は使用する前にSETで初期化しないと、デフォルトでは文字列型で初期値NULLになってしまい初期状態からいきなり加算処理を行ってもうまく動かない。さらにSQL中の同一行でユーザー変数の初期化と加算処理は同時にできない。 なのでUNIONで初期値代入と加算処理を分けることでこれを実現することができる。 適当なテーブルは、作成しようとしている擬似行以上の行が保証されているテーブルであればなんでもよい。 SELECT @f:=1 UNION ALL SELECT @f:=@f +1 FROM 適当なテーブル WHERE @f<8 ちなみにオラクルだと select RowNum from dual connect by Level <= 10; Oracle SQLパズルを参照のこと