新鮮

頑張らないために頑張る

SPONSORED LINK

MySQL group_concat は意外と便利かも

データベース系の資格といえば ORACLE MASTER が有名ですが、実は MySQL にも ORACLE MASTER 相当の資格があります。

  • (1Z0-882) Oracle Certified Professional, MySQL 5.6 Developer
  • (1Z0-883) Oracle Certified Professional, MySQL 5.6 Database Administrator

諸般の事情で MySQL 5.6 Developer をとらなければならなくなったので学習メモを残しておきたいと思います。資格勉強をする方や MySQL を利用する方の参考になればと思います。

今回は「group_concat は意外と便利かも」です。

group_concat 関数

ブログとかにあるラベルをデータベースで表現しようとすると、N:M の関係になるのでジャンクションを挟む形になります。それはそういうものなのですが「ある記事のラベルを並べて表示」のようなことをするのが面倒くさいです。

MySQL では「並べて表示」が簡単にできる関数があります。

mysql> select * from t;
+------+----------+
| id   | a        |
+------+----------+
|    1 | MySQL    |
|    1 | Database |
|    1 | Oracle   |
+------+----------+

mysql> select id, group_concat(a) from t group by id;
+------+-----------------------+
| id   | group_concat(a)       |
+------+-----------------------+
|    1 | MySQL,Database,Oracle |
+------+-----------------------+

横並び表記は O/R マッパーでは簡単にできそうですが、素の SQL でも簡単にできる関数が用意されています。デリミタやソート順は選べるようです(マニュアル)。

試験用チェックリスト

  • group_concat関数 : 正規形を非正規形に変換して表記する関数