집 >데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 여러 열을 JSON 개체 배열로 효율적으로 검색하는 방법은 무엇입니까?
PostgreSQL: 여러 열에서 객체의 JSON 배열 생성
이 가이드에서는 PostgreSQL 테이블의 행을 단일 열로 효율적으로 그룹화하고 나머지 열을 JSON 개체 배열로 집계하는 방법을 보여줍니다. MyTable
예를 살펴보겠습니다.
<code>| id | value_two | value_three | value_four | |---|---|---|---| | 1 | a | A | AA | | 2 | a | A2 | AA2 | | 3 | b | A3 | AA3 | | 4 | a | A4 | AA4 | | 5 | b | A5 | AA5 |</code>
목표는 다음과 같은 출력을 생성하는 것입니다.
<code>| value_two | value_four | |---|---| | a | [{"value_three":"A","value_four":"AA"}, {"value_three":"A2","value_four":"AA2"}, {"value_three":"A4","value_four":"AA4"}] | b | [{"value_three":"A3","value_four":"AA3"}, {"value_three":"A5","value_four":"AA5"}]</code>
간단한 집계 방법에는 JSON 개체에 id
및 그룹화 열(value_two
)이 포함되는 경우가 많으므로 이를 피하고 싶습니다.
다양한 PostgreSQL 버전에 최적화된 솔루션은 다음과 같습니다.
PostgreSQL 10 이상:
원치 않는 키를 제외하려면 -
연산자를 활용하세요.
<code class="language-sql">SELECT value_two, jsonb_agg(to_jsonb(t.*) - '{id, value_two}'::text[]) AS value_four FROM MyTable t GROUP BY value_two;</code>
PostgreSQL 9.4 이상:
키-값 쌍을 정밀하게 제어하려면 jsonb_build_object()
을 사용하세요.
<code class="language-sql">SELECT value_two, jsonb_agg(jsonb_build_object('value_three', value_three, 'value_four', value_four)) AS value_four FROM MyTable GROUP BY value_two;</code>
PostgreSQL 9.3 이상:
to_jsonb()
을 행 표현식으로 사용:
<code class="language-sql">SELECT value_two, jsonb_agg(to_jsonb(row(value_three, value_four))) AS value_four FROM MyTable GROUP BY value_two;</code>
이러한 방법은 불필요한 키를 피하고 다양한 PostgreSQL 버전에 적응하면서 원하는 JSON 출력을 생성하는 효율적이고 깔끔한 방법을 제공합니다. 최적의 성능을 위해 데이터베이스 버전과 호환되는 방법을 선택하세요.
위 내용은 PostgreSQL에서 여러 열을 JSON 개체 배열로 효율적으로 검색하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!