> 데이터 베이스 > MySQL 튜토리얼 > 하위 쿼리를 사용하여 PostgreSQL 테이블 행을 업데이트하려면 어떻게 해야 합니까?

하위 쿼리를 사용하여 PostgreSQL 테이블 행을 업데이트하려면 어떻게 해야 합니까?

Barbara Streisand
풀어 주다: 2025-01-05 14:38:41
원래의
342명이 탐색했습니다.

How Can I Update PostgreSQL Table Rows Using a Subquery?

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

PostgreSQL에서는 편리한 구문을 통해 SELECT 문에서 반환된 값을 사용하여 기존 행을 업데이트할 수 있습니다.

제공된 테이블 스키마를 고려하십시오.

CREATE TABLE public.dummy (
  address_id SERIAL,
  addr1 character(40),
  addr2 character(40),
  city character(25),
  state character(2),
  zip character(5),
  customer boolean,
  supplier boolean,
  partner boolean
);
로그인 후 복사

테이블을 업데이트하려면 하위 쿼리를 기반으로 다음 구문을 사용합니다.

UPDATE dummy
SET customer = subquery.customer,
    address = subquery.address,
    partn = subquery.partn
FROM (
  SELECT address_id, customer, address, partn
  FROM /* big hairy SQL */ ...
) AS subquery
WHERE dummy.address_id = subquery.address_id;
로그인 후 복사

이 구문은 표준 SQL은 아니지만 이러한 유형의 쿼리에 편리합니다. 예를 들어 복합 조인 결과를 기반으로 고객, 주소 및 파트너 열을 업데이트하려면 다음 하위 쿼리를 사용할 수 있습니다.

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 address,
       CASE
           WHEN partn.addr1 IS NOT NULL THEN TRUE
           ELSE FALSE
       END AS partn
FROM (
    SELECT *
    FROM address
) 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;
로그인 후 복사

이 업데이트를 실행하면 더미 테이블의 지정된 열이 하위 쿼리에서 얻은 값으로 업데이트됩니다.

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

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