MySQLでSELECTの出力に連番を付ける方法 †
SELECTした結果に対して先頭などに連番を付けたい場合は、以下のようにSQLを発行することにより実現できます。
関連資料 †
SELECTの結果に連番を付ける †
以下に2種類方法を記します。
変数を設定しSELECT文を実行 †
- テスト用のテーブルを作成
mysql> create table t1 (a int, b int, c int);
Query OK, 0 rows affected (0.01 sec)
- 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
- 変数@nmuに0を代入
mysql> set @num := 0;
Query OK, 0 rows affected (0.00 sec)
- 以下の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行で実現する方法 †
上記では、変数を指定した後、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)