JSON ARRAY 합치기 
//------------------------------------- 
* JSON 배열  합치기만 
    - JSON_ARRAYAGG  이용 
    - JSON_TABLE 을 사용하지 않으면  
        - "[1,2]" , "[2,3]"  를 합치면 => "[[1,2], [2,3]]" 으로 결과가 나옴 
        - 원하는 결과는 "[1,2,2,3]" 
SET @json = '["a", "b", "b", "a", "c"]'; 
SELECT  JSON_ARRAYAGG( item ) ) 
FROM JSON_TABLE( @json, '$[*]' 
    COLUMNS(     item TEXT PATH '$'    ) 
) as items 
ORDER BY items.item;  # 정렬 
//------------------------------------- 
* JSON 배열 합치고 중복값 제거(unique, distinct)
    - JSON_OBJECTAGG   와 JSON_KEYS 이용 
    - 주의!  JSON_KEYS 의 결과의 각 요소는 문자열 형태 
SET @json = '["a", "b", "b", "a", "c"]'; 
SELECT JSON_KEYS( JSON_OBJECTAGG( item, "" ) ) 
FROM JSON_TABLE( @json, '$[*]'  
    COLUMNS(    item TEXT PATH '$'   ) 
) as items; 
//-----------------------------------------------------------------------------
< 특정값만 삭제 >
예) [1,2,3] 에서 2만 삭제
SET @json = '[1,2,3]'; 
SELECT JSON_ARRAYAGG(element) FROM JSON_TABLE(@json, '$[*]' COLUMNS (element INT PATH '$')) AS jt   WHERE element <> 2;
- 테이블에 적용 query
UPDATE my_table SET json1 = ( SELECT JSON_ARRAYAGG(element) FROM JSON_TABLE(json1, '$[*]' COLUMNS (element INT PATH '$')) AS jt WHERE element <> 2 ) WHERE id = 1;
//------------------------------------- 
https://stackoverflow.com/questions/58051995/how-to-get-unique-distinct-elements-inside-json-array-in-mysql-5-7 
https://dev.mysql.com/doc/refman/8.0/en/json-search-functions.html 
https://dev.mysql.com/doc/refman/8.0/en/json-function-reference.html 
'Code > Database (DB)' 카테고리의 다른 글
| MySQL 8 접속 비밀번호 변경 방법 (0) | 2022.05.25 | 
|---|---|
| mysql 강제 재설치 (0) | 2022.05.02 | 
| [mysql] sort_buffer_size 설정 (0) | 2022.02.03 | 
| 쿼리 결과 이웃행(다음행)의 칼럼값을 비교 - 같은 값 제거 (0) | 2021.04.24 | 
| [MySql] 우분투에서 mysql 마이너 업그레이드 하는 방법 (0) | 2021.04.17 | 



