ホームページ >データベース >mysql チュートリアル >サブクエリを使用して Postgres テーブルの行を更新するにはどうすればよいですか?
Postgres では、サブクエリを使用して各行に必要な値を取得することで、テーブル行の更新を実行できます。これを実現する 1 つの方法は、次の構文を使用することです。
UPDATE table_name SET column_name = (SELECT value FROM subquery WHERE subquery_condition) WHERE table_condition;
次の例を考えてみましょう。ここでの目標は、Postgres 8.4 データベース内のダミー テーブルを更新し、顧客、サプライヤー、パートナーの列を埋めることです。サブクエリから派生した値を使用します:
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 ); UPDATE dummy SET customer = (SELECT CASE WHEN cust.addr1 IS NOT NULL THEN TRUE ELSE FALSE END), supplier = (SELECT CASE WHEN suppl.addr1 IS NOT NULL THEN TRUE ELSE FALSE END), partner = (SELECT CASE WHEN partn.addr1 IS NOT NULL THEN TRUE ELSE FALSE END) FROM ( SELECT * FROM address) pa LEFT OUTER JOIN cust_original cust ON (pa.addr1=cust.addr1 AND pa.addr2=cust.addr2 AND pa.city=cust.city AND pa.state=cust.state AND SUBSTR(cust.zip,1,5) = pa.zip ) LEFT OUTER JOIN supp_original suppl ON (pa.addr1=suppl.addr1 AND pa.addr2=suppl.addr2 AND pa.city=suppl.city AND pa.state=suppl.state AND pa.zip = SUBSTR(suppl.zip,1,5)) LEFT OUTER JOIN partner_original partn ON (pa.addr1=partn.addr1 AND pa.addr2=partn.addr2 AND pa.city=partn.city AND pa.state=partn.state AND pa.zip = SUBSTR(partn.zip,1,5) ) WHERE pa.address_id = address_id;
このクエリは、ダミーの各行の顧客、サプライヤー、パートナーの列を効果的に更新します。対応するアドレスが cust_original、supp_original、partner_original テーブルで見つかった場合は TRUE に設定し、それ以外の場合は FALSE に設定します。
この構文は標準 SQL ではありませんが、派生した値に基づいてテーブルの行を更新するのに便利です。特に Postgres のサブクエリから。
以上がサブクエリを使用して Postgres テーブルの行を更新するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。