#navi(../)
* MySQLでSELECTの出力に連番を付ける方法 [#u093a375]
SELECTした結果に対して先頭などに連番を付けたい場合は、以下のようにSQLを発行することにより実現できます。

#contents
#htmlinsertpcsp(db-top.html,db-sp.html)

* 関連資料 [#c670cc6d]
-[[PostgreSQLでSELECTの出力に連番を付ける方法>PostgreSQL/SELECTの出力に連番を付ける方法]]

* SELECTの結果に連番を付ける [#ya1e2d07]
以下に2種類方法を記します。
** 変数を設定しSELECT文を実行 [#o5088ba9]
+ テスト用のテーブルを作成
 mysql> create table t1 (a int, b int, c int);
 Query OK, 0 rows affected (0.01 sec)
#br
+ 3行データをインサート
 mysql> insert into t1 values(1,10,100),(2,20,200),(3,30,300);
 Query OK, 3 rows affected (0.01 sec)
 Records: 3  Duplicates: 0  Warnings: 0
#br
+ 変数@nmuに0を代入
 mysql> set @num := 0;
 Query OK, 0 rows affected (0.00 sec)
#br
+ 以下のSQLを実行しSELECT結果に連番を付与しています
 mysql> select (@num := @num + 1) as no, t1.* from t1;
 +------+------+------+------+
 | no   | a    | b    | c    |
 +------+------+------+------+
 |    1 |    1 |   10 |  100 |
 |    2 |    2 |   20 |  200 |
 |    3 |    3 |   30 |  300 |
 +------+------+------+------+
 3 rows in set (0.00 sec)

** 1行で実現する方法 [#j14698d8]
上記では、変数を指定した後、SELECTを実行していました。~
以下の例は、1行で実現しています。
 mysql> select @num := @num + 10 as no, t1.* from (select @num := 100) as dmy, t1;
 +------+------+------+------+
 | no   | a    | b    | c    |
 +------+------+------+------+
 |  110 |    1 |   10 |  100 |
 |  120 |    2 |   20 |  200 |
 |  130 |    3 |   30 |  300 |
 +------+------+------+------+
 3 rows in set (0.00 sec)

#htmlinsertpcsp(db-btm.html,db-sp.html)

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS