> 데이터 베이스 > MySQL 튜토리얼 > 조건부 논리가 포함된 하위 쿼리를 사용하여 PostgreSQL 테이블 행을 업데이트하는 방법은 무엇입니까?

조건부 논리가 포함된 하위 쿼리를 사용하여 PostgreSQL 테이블 행을 업데이트하는 방법은 무엇입니까?

DDD
풀어 주다: 2025-01-05 02:09:41
원래의
331명이 탐색했습니다.

How to Update PostgreSQL Table Rows Using a Subquery with Conditional Logic?

하위 쿼리를 사용하여 PostgreSQL 테이블 행 업데이트

Postgres 데이터베이스에 기존 테이블이 있고 업데이트해야 하는 시나리오를 생각해 보세요. 하위 쿼리에서 얻은 값을 사용하는 행입니다. 이 작업은 간결한 업데이트 문을 사용하여 수행할 수 있습니다.

이 특별한 경우의 목표는 여러 테이블을 조인하는 복잡한 하위 쿼리(cust_original, supp_original 및 Partner_original)에서 검색된 값을 사용하여 더미 테이블의 행을 업데이트하는 것입니다. ) 그리고 조건부 논리를 적용하여 고객, 공급업체 및 파트너 열의 값을 결정합니다.

이 업데이트를 수행하려면 다음 구문:

UPDATE dummy
SET customer = subquery.customer,
    supplier = subquery.supplier,
    partner = subquery.partner
FROM (
    SELECT address_id,
           CASE WHEN cust.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS customer,
           CASE WHEN suppl.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS supplier,
           CASE WHEN partn.addr1 IS NOT NULL THEN TRUE ELSE FALSE END AS partner
    FROM address AS pa
    LEFT OUTER JOIN cust_original AS cust
        ON (pa.addr1 = cust.addr1 AND pa.addr2 = cust.addr2 AND pa.city = cust.city 
            AND pa.state = cust.state AND SUBSTRING(cust.zip, 1, 5) = pa.zip)
    LEFT OUTER JOIN supp_original AS suppl 
        ON (pa.addr1 = suppl.addr1 AND pa.addr2 = suppl.addr2 AND pa.city = suppl.city 
            AND pa.state = suppl.state AND pa.zip = SUBSTRING(suppl.zip, 1, 5))
    LEFT OUTER JOIN partner_original AS partn
        ON (pa.addr1 = partn.addr1 AND pa.addr2 = partn.addr2 AND pa.city = partn.city
            AND pa.state = partn.state AND pa.zip = SUBSTRING(partn.zip, 1, 5))
    WHERE pa.address_id = address_id
) AS subquery
WHERE dummy.address_id = subquery.address_id;
로그인 후 복사

이 문은 하위 쿼리를 활용하여 고객, 공급업체 및 파트너 열의 값을 파생합니다. 하위 쿼리는 제공된 삽입 문에 지정된 대로 필요한 조인과 조건부 논리를 수행합니다.

그런 다음 외부 UPDATE 문은 이러한 하위 쿼리 파생 값을 더미 테이블의 해당 열에 적용하고, address_id 필드입니다.

이 접근 방식은 복잡하거나 동적 계산에서 파생된 값을 기반으로 테이블 행을 업데이트해야 할 때 또는 기존 방식이 사용되지 않는 대규모 데이터 세트로 작업할 때 특히 유용합니다. 행 단위 업데이트는 비효율적일 수 있습니다.

위 내용은 조건부 논리가 포함된 하위 쿼리를 사용하여 PostgreSQL 테이블 행을 업데이트하는 방법은 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

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