Агрегатная функция в MySQL - список (например, LISTAGG в Oracle)

Мне нужна функция, которая возвращает список строк.

У меня есть данные в такой таблице:

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 26 February 2012 в 19:28
поделиться

2 ответа

Вы ищете GROUP_CONCAT ()

Попробуйте:

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

Конечно, вы можете group by результаты.

44
ответ дан 28 November 2019 в 05:16
поделиться

Начиная с MySQL 5.7.22 вы также можете использовать две функции агрегирования JSON: JSON_ARRAYAGG или JSON_OBJECTAGG . Вы можете объединить их вместе с функциями JSON MySQL , чтобы получить результаты, агрегированные как JSON. В отличие от GROUP_CONCAT, нет параметра конфигурации MySQL, который бы ограничивал размер возвращаемого значения, кроме max_allowed_packet (который влияет на все запросы).

1
ответ дан 28 November 2019 в 05:16
поделиться
Другие вопросы по тегам:

Похожие вопросы: