このエントリーをはてなブックマークに追加


MySQLでSELECTの出力に連番を付ける方法

SELECTした結果に対して先頭などに連番を付けたい場合は、以下のようにSQLを発行することにより実現できます。

関連資料

SELECTの結果に連番を付ける

以下に2種類方法を記します。

変数を設定しSELECT文を実行

  1. テスト用のテーブルを作成
    mysql> create table t1 (a int, b int, c int);
    Query OK, 0 rows affected (0.01 sec)
     
  2. 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
     
  3. 変数@nmuに0を代入
    mysql> set @num := 0;
    Query OK, 0 rows affected (0.00 sec)
     
  4. 以下の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)

トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2015-03-20 (金) 22:08:00