裏MySQL クエリー入門 (8) 基礎編6 GROUP_CONCAT

 GROUP_CONCATは、グループ内の文字列を、指定された区切り文字で結合する。集約(GROUP)関数です。文字列版のSUMのようなものですね。phpで言えばimplodeみたいなものです。

ここでは、裏MySQL クエリー入門 (7) のサンプルをカンマ区切りにしてみましょう。

  • 都道府県テーブルのプライマリキー以外のカラムを取得(カンマ区切りで取得)
SELECT GROUP_CONCAT(COLUMN_NAME SEPARATOR ',') 
FROM information_schema.`COLUMNS` 
WHERE TABLE_SCHEMA='DB名' 
  AND TABLE_NAME='pref' 
  AND COLUMN_KEY<>'PRI'

この例ではプリマリキー以外のカラムが1つですが、複数ある場合はこちらのカンマ区切りで出力できると、いろいろと応用が効きます。

ちなみに、GROUP_CONCATは結合できる文字列の最大文字数に上限があるので注意しましょう。長くなりそうな場合以下のように最大文字列長を指定しておきます。

SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;