Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich Postgres-Tabellenzeilen 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;
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;
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!