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 |