MUGIJIRU.JP

Webエンジニアの雑談ブログ

MySQL集計関数の小技(GROUP_CONCAT)

MySQLには「GROUP_CONCAT」という関数があります。
これには、複数のレコードを1行の文字列にカンマ区切りでつなげる能力があって
調査とか分析などでもたまに利用します。

どういう関数なのかは下記などよくまとめてくださっている方の記事をご参考に・・・
https://qiita.com/kyuu1999/items/93b02128f07c577b3e48

小技の紹介

この結果セットがカンマ区切りで文字として取れるのは周知のことと思いますが
実はこの関数、このまとまった文字列に対してソートとか重複排除ができたりします。

# 結果セットをidを基準に昇順で並べる
GROUP_CONCAT(bind_value ORDER BY id ASC)

# 結果セットを重複排除してユニークにする
GROUP_CONCAT(DISTINCT bind_value)

# 結果セットをユニークにしてidを基準に降順にする
GROUP_CONCAT(DISTINCT bind_value ORDER BY id DESC)

ちなみに、DISTINCTはCOUNTなどでも利用できます。

便利ですね!