ホームページ > データベース > mysql チュートリアル > サブクエリの値を使用して PostgreSQL 行を更新するにはどうすればよいですか?

サブクエリの値を使用して PostgreSQL 行を更新するにはどうすればよいですか?

DDD
リリース: 2025-01-04 21:10:40
オリジナル
220 人が閲覧しました

How to Update PostgreSQL Rows with Values from a Subquery?

サブクエリを使用した PostgreSQL テーブルの行の更新

サブクエリから返された値を使用して PostgreSQL テーブル内の既存の行を更新するには、次を利用できます。構文:

UPDATE table_name
SET column_name = subquery.column_name
FROM (SELECT ...) AS subquery
WHERE table_name.id = subquery.id;
ログイン後にコピー

テーブルの例をダミーとして考えます指定したもの:

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
)
WITH (
  OIDS=FALSE
);
ログイン後にコピー

select ステートメントから返された値に基づいて顧客、サプライヤー、パートナーの列を更新するには、次の構文を使用できます:

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 CAST(cust.zip AS VARCHAR(5)) = CAST(pa.zip AS VARCHAR(5)))
      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 CAST(pa.zip AS VARCHAR(5)) = CAST(CAST(suppl.zip AS VARCHAR(25)) AS VARCHAR(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 CAST(pa.zip AS VARCHAR(5)) = CAST(CAST(partn.zip AS VARCHAR(25)) AS VARCHAR(5)))) AS subquery
WHERE dummy.address_id = subquery.address_id;
ログイン後にコピー

このクエリは実行されます。次の操作:

  • サブクエリからダミー テーブルの各行の顧客、サプライヤー、パートナーの値を選択します。ダミー テーブルを cust_original、supp_original、partner_original テーブルと結合します。
  • ダミー テーブルの customer、supplier、partner 列をサブクエリによって返された値に設定します。
  • サブクエリ内の一致する address_id を持つダミー テーブル内の行。

以上がサブクエリの値を使用して PostgreSQL 行を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート