> 데이터 베이스 > MySQL 튜토리얼 > 단일 PostgreSQL 쿼리에서 여러 행을 효율적으로 업데이트하려면 어떻게 해야 합니까?

단일 PostgreSQL 쿼리에서 여러 행을 효율적으로 업데이트하려면 어떻게 해야 합니까?

Linda Hamilton
풀어 주다: 2025-01-12 22:37:47
원래의
849명이 탐색했습니다.

How Can I Efficiently Update Multiple Rows in a Single PostgreSQL Query?

PostgreSQL: 다중 행 업데이트 간소화

PostgreSQL은 여러 행을 동시에 업데이트할 수 있는 효율적인 방법을 제공하는데, 이는 상당한 데이터 세트나 복잡한 업데이트 조건을 처리할 때 상당한 이점을 제공합니다. 기존 SQL의 행당 개별 UPDATE 문과 달리 PostgreSQL은 두 가지 우수한 대안을 제공합니다.

접근법 1: CASE를 사용한 조건부 업데이트

CASE 표현식을 사용하면 특정 기준에 따라 행에 다른 값을 할당할 수 있습니다. UPDATE 문 구조는 다음과 같습니다.

<code class="language-sql">UPDATE table_name
SET column_name = CASE
    WHEN condition1 THEN value1
    WHEN condition2 THEN value2
    ...
    ELSE default_value
END
WHERE condition;</code>
로그인 후 복사

예를 들어, column_a을 1(column_b이 '123'인 경우)로 설정하고 2(column_b이 '345'인 경우)로 설정하려면:

<code class="language-sql">UPDATE table_name
SET column_a = CASE
    WHEN column_b = '123' THEN 1
    WHEN column_b = '345' THEN 2
    ELSE column_a  -- Retain original value if condition not met
END
WHERE column_b IN ('123', '345');</code>
로그인 후 복사

접근 2: 간결한 업데이트를 위한 업데이트...FROM

UPDATE...FROM 구성은 별도의 테이블이나 하위 쿼리를 사용하여 업데이트 값을 정의하므로 코드가 더 깔끔하고 읽기 쉬워집니다. 구문은 다음과 같습니다.

<code class="language-sql">UPDATE table_name
SET column_names = (SELECT column_names FROM subquery)
WHERE condition;</code>
로그인 후 복사

이전 예에 적용:

<code class="language-sql">UPDATE table_name AS t
SET column_a = c.column_a
FROM (
    VALUES
    ('123', 1),
    ('345', 2)
) AS c(column_b, column_a) 
WHERE c.column_b = t.column_b;</code>
로그인 후 복사

이러한 PostgreSQL 기술은 특히 대규모 데이터 조작의 경우 개별 UPDATE 문에 비해 효율성과 코드 명확성을 크게 향상시킵니다.

위 내용은 단일 PostgreSQL 쿼리에서 여러 행을 효율적으로 업데이트하려면 어떻게 해야 합니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
저자별 최신 기사
인기 튜토리얼
더>
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿