>데이터 베이스 >MySQL 튜토리얼 >PostgreSQL에서 여러 열을 JSON 개체 배열로 효율적으로 검색하는 방법은 무엇입니까?

PostgreSQL에서 여러 열을 JSON 개체 배열로 효율적으로 검색하는 방법은 무엇입니까?

Mary-Kate Olsen
Mary-Kate Olsen원래의
2025-01-14 21:51:43543검색

How to Efficiently Retrieve Multiple Columns as a JSON Array of Objects in PostgreSQL?

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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.