ホームページ > データベース > 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 データベースに既存のテーブルがあり、更新する必要があるシナリオを考えてみましょう。サブクエリから取得した値を使用してその行を取得します。このタスクは、簡潔な update ステートメントを使用して実行できます。

この特定のケースでは、目的は、複数のテーブル (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 中国語 Web サイトの他の関連記事を参照してください。

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