>데이터 베이스 >MySQL 튜토리얼 >배열 필드를 사용하여 PostgreSQL 테이블을 조인할 때 배열 요소 순서를 유지하는 방법은 무엇입니까?

배열 필드를 사용하여 PostgreSQL 테이블을 조인할 때 배열 요소 순서를 유지하는 방법은 무엇입니까?

Linda Hamilton
Linda Hamilton원래의
2024-12-27 07:49:10793검색

How to Preserve Array Element Order When Joining PostgreSQL Tables with Array Fields?

배열 유형을 사용하여 PostgreSQL JOIN 구현 및 배열 요소 순서 유지

문제:
항목 테이블에서 데이터를 검색하여 순서를 유지합니다. 특정에 대한 some_chosen_data_in_order 테이블의 배열 유형 필드에 있는 요소 수 row.

시도 #1: JOIN

SELECT I.* FROM items AS I
JOIN some_chosen_data_in_order AS S ON I.id = ANY(S.id_items)
WHERE S.id = ?

시도 #2: 하위 쿼리

SELECT I.* FROM items AS I
WHERE I.id = ANY
(ARRAY[SELECT S.id_items FROM some_chosen_data_in_order WHERE id = ?])

이러한 접근 방식 중 어느 것도 요소의 순서를 유지하지 않습니다. array.

해결책:

SELECT t.*
FROM unnest(ARRAY[1,2,3,2,3,5]) item_id
LEFT JOIN items t on t.id=item_id

이 쿼리는 요소 순서를 유지하면서 배열을 개별 행으로 중첩 해제합니다. 그런 다음 id 필드를 기반으로 결과 항목을 항목 테이블과 조인합니다.

예:

ID items_data
1 {2,4,233,5}

위 쿼리는 다음을 반환합니다. 결과:

id data
2 foo
4 bar
233 baz
5 qux

설명:

unnest 함수는 요소당 한 행이 있는 테이블로 배열을 압축 해제합니다. LEFT JOIN은 항목 테이블에 해당 행이 없는 항목을 포함하여 배열의 모든 항목이 반환되도록 합니다.

위 내용은 배열 필드를 사용하여 PostgreSQL 테이블을 조인할 때 배열 요소 순서를 유지하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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