やり方は簡単、MariaDB10.0以降で下記のSQLを実行して
「Sequence」というストレージエンジンをインストールするだけ。
INSTALL SONAME "ha_sequence";
これだけでGENERATE_SERIESと同じ動きします。
このような感じで指定した範囲でデータを取得できます。
MariaDB [test]> SELECT seq FROM seq_0_to_10;
+-----+
| seq |
+-----+
| 0 |
| 1 |
| 2 |
| 3 |
| 4 |
| 5 |
| 6 |
| 7 |
| 8 |
| 9 |
| 10 |
+-----+
11 rows in set (0.00 sec)
ちゃんとステップも使えます。
MariaDB [test]> SELECT seq FROM seq_0_to_10_step_2;
+-----+
| seq |
+-----+
| 0 |
| 2 |
| 4 |
| 6 |
| 8 |
| 10 |
+-----+
6 rows in set (0.00 sec)
今まで、ユーザー定義変数を使ったりして面倒だった日付、時間の一覧も簡単に出力できます。
MariaDB [test]> SELECT ('2015-04-01' + INTERVAL seq DAY) AS day FROM seq_0_to_10;
+------------+
| day |
+------------+
| 2015-04-01 |
| 2015-04-02 |
| 2015-04-03 |
| 2015-04-04 |
| 2015-04-05 |
| 2015-04-06 |
| 2015-04-07 |
| 2015-04-08 |
| 2015-04-09 |
| 2015-04-10 |
| 2015-04-11 |
+------------+
11 rows in set (0.00 sec)
MariaDB [test]> SELECT (CAST('00:00:00' AS time) + INTERVAL 30*seq MINUTE) AS day FROM seq_0_to_10;
+----------+
| day |
+----------+
| 00:00:00 |
| 00:30:00 |
| 01:00:00 |
| 01:30:00 |
| 02:00:00 |
| 02:30:00 |
| 03:00:00 |
| 03:30:00 |
| 04:00:00 |
| 04:30:00 |
| 05:00:00 |
+----------+
11 rows in set (0.00 sec)
今まで知らなかったけどめっちゃ便利だわー