그룹별 테이블 행 자동 번호 매기기
이 가이드에서는 특히 그룹화가 address_history
열을 기반으로 하는 person_id
테이블의 주소를 지정하여 테이블의 그룹 내 행에 순차적 번호를 자동으로 할당하는 방법을 보여줍니다. 여러 가지 방법이 있지만 여기서는 직렬 컬럼과 윈도우 함수를 사용하는 데 중점을 두겠습니다.
방법 1: 직렬 컬럼 사용(권장)
가장 간단한 접근 방식은 직렬 또는 IDENTITY 열을 활용하는 것입니다. 그러면 고유한 연속 번호가 자동으로 생성됩니다.
<code class="language-sql">CREATE TABLE address_history ( address_history_id SERIAL PRIMARY KEY, person_id INT NOT NULL REFERENCES people(id), created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, previous_address TEXT );</code>
SERIAL
열(address_history_id
)은 자동으로 증가하여 각 행에 원하는 일련 번호를 부여합니다.
방법 2: 창 함수 사용(대체)
직렬 열이 가능하지 않은 경우 창 기능이 솔루션을 제공합니다. 순차번호 컬럼을 추가하는 뷰를 생성하는 메소드입니다.
<code class="language-sql">CREATE VIEW address_history_nr AS SELECT *, ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY address_history_id) AS adr_nr FROM address_history;</code>
이렇게 하면 각 address_history_nr
그룹 내에 일련 번호가 있는 추가 열(adr_nr
)이 포함된 뷰(person_id
)가 생성됩니다. 이 뷰는 쿼리에서 테이블을 대체하는 역할을 합니다.
중요 사항:
TIMESTAMP WITH TIME ZONE
를 사용하세요.previous_address
만 저장하는 것이 좋습니다. 현재 주소와 이전 주소를 모두 유지하면 데이터 불일치가 발생할 수 있습니다.이 접근 방식은 그룹 내에서 효율적이고 정확한 순차 번호 지정을 보장하여 데이터 관리 및 쿼리 성능을 향상시킵니다.
위 내용은 그룹화를 기반으로 테이블의 행에 일련 번호를 할당하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!