programing

MySQL의 Aggregate 함수 - 목록(Oracle의 LISTAGG와 같이)

newstyles 2023. 9. 21. 20:10

MySQL의 Aggregate 함수 - 목록(Oracle의 LISTAGG와 같이)

문자열 목록을 반환하는 함수가 필요합니다.

다음과 같은 데이터가 테이블에 있습니다.

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

다음과 같은 기능이 필요합니다(오라클에서도 이와 같은 기능이 가능합니다).

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

이는 다음과 같은 것을 반환합니다.

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

무슨 생각 있어요?

GROUP_CONCAT()를 찾고 있습니다.

시도해 보기:

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

물론 할 수 있죠.group by결과물

MySQL 5.7.22부터는 JSON_ARYAGG 또는 JSON_OBJECTAGG의 두 가지 JSON 집성 기능을 사용할 수도 있습니다.이를 MySQL의 JSON 함수와 함께 결합하여 JSON으로 집계된 결과를 얻을 수 있습니다.와는 달리GROUP_CONCAT, 반환된 값의 크기를 제한하는 MySQL 구성 매개 변수가 없습니다.max_allowed_packet(이는 모든 쿼리에 영향을 미칩니다.)

언급URL : https://stackoverflow.com/questions/9456380/aggregate-function-in-mysql-list-like-listagg-in-oracle