MySQL中的聚合函数 - 列表(如Oracle中的LISTAGG)

时间:2012-02-26 19:28:24

标签: mysql aggregate-functions

我需要函数,它返回字符串列表。

我的表格数据如下:

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

我需要这样的功能(这样的东西在oracle中有效):

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

返回类似这样的内容:

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

有什么想法吗?

2 个答案:

答案 0 :(得分:39)

您正在寻找GROUP_CONCAT()

试试这个:

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

当然,您可以group by结果。

答案 1 :(得分:1)

从MySQL 5.7.22开始,您还可以使用两个JSON聚合函数:JSON_ARRAYAGGJSON_OBJECTAGG。您可以将它们与MySQL's JSON functions结合使用,以将结果汇总为JSON。与GROUP_CONCAT不同,除了max_allowed_packet(会影响所有查询)之外,没有MySQL配置参数会限制返回值的大小。