• Home
  • Archive
  • MariaDBでPostgreSQLのGENERATE_SERIESを使う

MariaDBでPostgreSQLのGENERATE_SERIESを使う

MariaDBでPostgreSQLのGENERATE_SERIESを使う

やり方は簡単、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)

今まで知らなかったけどめっちゃ便利だわー
Source: Sequence -- MariaDB Knowledge Base

Profile

Kazuki Hayashi

I'm a full stack engineer.
I love programming and alcohol.

TOC