MySQL @Wiki 実用リファレンス

GROUP_CONCAT

最終更新:

my-sql

- view
管理者のみ編集可


GROUP_CONCAT

GROUP_CONCAT(expr)
完全な構文
GROUP_CONCAT([DISTINCT] expr [,expr ...]
             [ORDER BY {unsigned_integer | col_name | formula} [ASC | DESC] [,col ...]]
             [SEPARATOR str_val])
この関数は MySQL バージョン 4.1 で追加された。 この関数はグループ内の値を連結した結果の文字列を返す。

mysql> SELECT student_name,
    ->        GROUP_CONCAT(test_score)
    ->        FROM student 
    ->        GROUP BY student_name;
または
mysql> SELECT student_name,
    ->        GROUP_CONCAT(DISTINCT test_score
    ->                     ORDER BY test_score DESC SEPARATOR " ")
    ->        FROM student
    ->        GROUP BY student_name;

MySQL では、式の組み合わせの連結値を得ることができる。 DISTINCT を使用することで、重複する値は排除できる。 結果の値をソートするには、ORDER BY 節を使用する。 逆の順序でソートするには、ORDER BY 節でソートキーとするカラムの名前に DESC(降順)キーワードを付ける。デフォルトは昇順だが、昇順を明示的に指定するには、ASC キーワードを指定する。 SEPARATOR は結果の値と値の間に挿入する文字列値を表す。デフォルトはカンマ('","')。区切り記号をまったく使用しない場合は、SEPARATOR "" と指定する。
使用可能な最大長は、変数 group_concat_max_len をオプション設定ファイルに記述することで設定できる。 設定を SQL クエリで行う構文は次のとおり。
SET [SESSION | GLOBAL] group_concat_max_len = unsigned_integer;
最大長が設定されている場合、結果はこの最大長に合わせて切り捨てられる。
GROUP_CONCAT() 関数は、Sybase SQL Anywhere でサポートされている基本の LIST() 関数を拡張した実装である。 カラムが 1 つだけで、その他のオプションが指定されていない場合、GROUP_CONCAT() は機能がかなり制限されている LIST() と下位互換になる。ただし、LIST() にはデフォルトのソート順序はある。










記事メニュー
目安箱バナー