programing

MariaDB에서 MySQL의 JSONOBJECTAGG()와 동등한 방법이 있습니까?

minecode 2022. 10. 21. 21:39
반응형

MariaDB에서 MySQL의 JSONOBJECTAGG()와 동등한 방법이 있습니까?

데이터 프로젝트를 위해 작업하던 서버가 다운되어 데이터베이스를 다시 만들고 있습니다.MySQL 데이터베이스를 사용하다가 지금은 MariaDB를 사용하고 있습니다.MariaDB를 사용한 적이 없습니다.

이전에는 다음 명령을 사용하여 몇 가지 데이터를 다른 테이블에서 다른 테이블로 삽입했습니다.

CREATE TABLE collaborators_list 
SELECT awards.id, awards.researcher_name, awards.organization_id, 
    JSON_OBJECTAGG(awards.fiscal_year, coapplicants.coapplicant_name, 
    coapplicants.organization_number) 
AS 'coapplicants_list' FROM awards 
INNER JOIN coapplicants 
ON awards.id=coapplicants.id 
GROUP BY awards.researcher_name, awards.organization_id;

기본적으로 MariaDB에서도 같은 작업을 수행할 수 있습니다.https://mariadb.com/kb/en/library/json-functions/을 찾아보려고 했는데, 제가 잘못 읽고 있는 것이 아니라면, 이것들 중 어느 것도 제가 정말 원하는 것이 아닙니다.

도와주세요!

아니요, MariaDB는 아직 지원하지 않습니다.JSON_ARRAYAGG그리고.JSON_OBJECTAGG기능들.다음 기능을 요청하기 위해 JIRA 티켓이 발행되었습니다.https://jira.mariadb.org/browse/MDEV-16620

다음으로 의 문서를 참조해 주십시오.

두 개의 열 이름 또는 식을 인수로 사용합니다.첫 번째 열 이름 또는 식은 키로 사용되고 두 번째 열 이름은 값으로 사용됩니다.

키 이름이 NULL이거나 인수 수가 2가 아닌 경우 오류가 발생합니다.

단, 다음과 같은 세 가지 인수를 지정하고 있습니다.JSON_OBJECTAGG(awards.fiscal_year, coapplicants.coapplicant_name, coapplicants.organization_number);그러면시도된쿼리도실행되지않습니다.

필요한 함수가 없는 경우 를 사용할 수 있습니다.앞의 단락에서 설명한 바와 같이 첫 번째 두 개의 인수만 필요할 것으로 예상됩니다.

GROUP_CONCAT( DISTINCT CONCAT('"', awards.fiscal_year, '": "',
                              coapplicants.coapplicant_name, '"') 
              SEPARATOR ', ')

문자열이 매우 길어질 경우 Group_Concat()에 의해 문자열이 잘릴 수 있습니다.따라서 위의 쿼리 전에 다음 쿼리를 실행하여 허용되는 길이를 늘릴 수 있습니다.

SET SESSION group_concat_max_len = @@max_allowed_packet;

언급URL : https://stackoverflow.com/questions/53236872/is-there-an-equivalent-way-to-do-mysqls-jsonobjectagg-in-mariadb

반응형