집 >데이터 베이스 >MySQL 튜토리얼 >MySQL에서 중첩된 JSON 개체를 생성할 때 \'하위 쿼리가 1개 이상의 행을 반환합니다\' 오류를 방지하는 방법은 무엇입니까?
문제:
네이티브 JSON 기능을 활용하려는 MySQL 사용자는 다음과 같은 문제가 발생할 수 있습니다. 관계형 데이터베이스에서 중첩된 JSON 개체를 구축하는 데 어려움을 겪습니다. 특히 일대다 관계에서 하위 개체를 생성하려고 하면 "하위 쿼리가 1개 이상의 행을 반환합니다." 오류가 발생합니다.
해결책:
중첩을 효과적으로 생성하려면 MySQL을 사용하는 JSON 개체의 경우 상위 개체의 입력에 여러 결과를 반환하는 하위 쿼리를 사용하지 않는 것이 중요합니다. 대신 GROUP_CONCAT 함수를 사용하여 결과를 연결하고 JSON 배열로 변환합니다.
예:
질문에 제공된 예를 바탕으로 다음 쿼리는 다음을 수행합니다. 원하는 JSON 구조 생성:
SELECT JSON_OBJECT( 'id', p.id, 'desc', p.`desc`, 'child_objects', ( SELECT CAST(CONCAT('[', GROUP_CONCAT(JSON_OBJECT('id', id, 'parent_id', parent_id, 'desc', `desc`)), ']') AS JSON) FROM child_table AS c WHERE c.parent_id = p.id ) ) FROM parent_table AS p;
이 쿼리는 CONCAT 및 GROUP_CONCAT을 사용하여 병합합니다. 최종 결과에서 원하는 하위 개체. 연결된 문자열을 JSON 데이터 유형으로 변환하면 중첩 구조의 올바른 형식이 보장됩니다.
결과:
렌더링된 JSON 객체는 다음에 지정된 형식과 밀접하게 일치합니다. 질문:
{ "id": 1, "desc": "parent row 1", "child_objects": [ { "id": 1, "parent_id": 1, "desc": "child row 1" }, { "id": 2, "parent_id": 1, "desc": "child row 2" } ] }
추가 참고:
위 내용은 MySQL에서 중첩된 JSON 개체를 생성할 때 \'하위 쿼리가 1개 이상의 행을 반환합니다\' 오류를 방지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!