忍者ブログ

VB.NET-TIPS などプログラミングについて

VB.NETのTIPS(小技集)を中心に、Javascript、PHP その他のプログラミングについて少し役に立つ情報を発信します。いわゆる個人的な忘備録ですが、みなさんのお役に立てれば幸いです。

MySQL SELECTの出力に連番を付ける方法について

SELECT の出力に連番を振りたい場合は良くあると思います。 主キーは削除したりすれば欠番が生じたりしますし、いろんな条件を付加したりソート指定を行って連番を表示したい場合があります。

そんな時には、MySQLユーザー定義変数SET コマンドで宣言し、それをカウンタの様にして使うことで 連番の発生を行うことができます。

SET @no = 0;
SELECT (@no := @no + 1) as no, t_auto.* from t_auto order by id desc;

このSQLを実行すると以下の様になります。

MariaDB [test]> SET @no = 0;
Query OK, 0 rows affected (0.39 sec)

MariaDB [test]> SELECT (@no := @no + 1) as no, t_auto.* from t_auto order by id desc;
+------+----+--------+
| no   | id | val    |
+------+----+--------+
|    1 |  5 | test-a |
|    2 |  4 | test4  |
|    3 |  2 | test2  |
|    4 |  1 | test1  |
+------+----+--------+
4 rows in set (0.22 sec)

SET コマンドの部分を SELECTFROM句 の中に入れてしまうと以下の様にできます。

select @no := @no + 1 as no, t_auto.*
from (select @no := 0) as dmy, t_auto
order by id desc;

このSQLを実行すると以下の様になります。

MariaDB [test]> select @no := @no + 1 as no, t_auto.*
    -> from (select @no := 0) as dmy, t_auto
    -> order by id desc;
+------+----+--------+
| no   | id | val    |
+------+----+--------+
|    1 |  5 | test-a |
|    2 |  4 | test4  |
|    3 |  2 | test2  |
|    4 |  1 | test1  |
+------+----+--------+
4 rows in set (0.00 sec)











PR

コメント

コメントを書く