web-dev-qa-db-ja.com

MySQLの集計関数-リスト(OracleのLISTAGGのような)

文字列のリストを返す関数が必要です。

私はこのようなテーブルにデータがあります:

Id    MyString
------------------------
 1    First
 2    Second
 3    Third
 4    Fourth

私はこのような機能が必要です(これはOracleで機能します):

select LISTAGG(MyString, ', ') as myList where id < 4

これは次のようなものを返します:

myList
------------------------
First, Second, Third

何か案は?

27
Kamil

あなたが探している GROUP_CONCAT()

これを試して:

select group_concat(MyString separator ', ') as myList from table
where id < 4

もちろん、group by 結果。

42
Mosty Mostacho

MySQL 5.7.22以降では、2つのJSON集約関数 JSON_ARRAYAGG または JSON_OBJECTAGG も使用できます。これらを MySQLのJSON関数 と組み合わせて、結果をJSONとして集計できます。 GROUP_CONCATとは異なり、max_allowed_packet(すべてのクエリに影響を与える)以外に、返される値のサイズを制限するMySQL構成パラメーターはありません。

1
alumarcu