GROUP_CONCAT(expr)

完全な構文

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

(例1)

SELECT C.Name,count(*) as nlanguages,GROUP_CONCAT(Language)
FROM Country C,CountryLanguage CL
WHERE CL.IsOfficial = 'T'
AND CL.CountryCode = C.Code
group by C.Name
order by nlanguages
desc limit 3;

group_concat

ちなみに、GROUP_CONCATを利用しないと以下のようになる。

group_concat_no

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_max_len

(例2)

select CountryCode,Group_Concat(Language)
from CountryLanguage where
CountryCode ='JPN';

group_concat_sample1


select CountryCode,Language
from CountryLanguage where
CountryCode ='JPN';

group_concat_sample2_no

参考サイト
6.3.7.1. GROUP BY 関数

Comments are closed.

Post Navigation