Heim > Datenbank > MySQL-Tutorial > Wie aktualisiere ich Postgres-Tabellenzeilen mithilfe von Unterabfragen?

Wie aktualisiere ich Postgres-Tabellenzeilen mithilfe von Unterabfragen?

Linda Hamilton
Freigeben: 2025-01-03 18:06:42
Original
623 Leute haben es durchsucht

How to Update Postgres Table Rows Using Subqueries?

Aktualisieren von Tabellenzeilen in Postgres mithilfe von Unterabfragen

In Postgres ist es möglich, Tabellenzeilen mithilfe von Unterabfragen zu aktualisieren, um die gewünschten Werte für jede Zeile abzurufen. Eine Möglichkeit, dies zu erreichen, ist die folgende Syntax:

UPDATE table_name
SET column_name = (SELECT value FROM subquery WHERE subquery_condition)
WHERE table_condition;
Nach dem Login kopieren

Betrachten Sie das folgende Beispiel, bei dem das Ziel darin besteht, die Dummy-Tabelle in einer Postgres 8.4-Datenbank zu aktualisieren und die Spalten „Kunde“, „Lieferant“ und „Partner“ auszufüllen mit aus einer Unterabfrage abgeleiteten Werten:

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;
Nach dem Login kopieren

Diese Abfrage aktualisiert effektiv die Kunden-, Lieferanten- und Partnerspalten für jede Zeile in der Dummy-Tabelle und setzt sie auf TRUE wenn die entsprechende Adresse in den Tabellen cust_original, supp_original und partner_original gefunden wird, oder andernfalls auf FALSE.

Diese Syntax ist kein Standard-SQL, bietet aber Komfort zum Aktualisieren von Tabellenzeilen basierend auf Werten, die von Unterabfragen abgeleitet werden, insbesondere in Postgres .

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich Postgres-Tabellenzeilen mithilfe von Unterabfragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Quelle:php.cn
Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage