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 중국어 웹사이트의 기타 관련 기사를 참조하세요!