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!