Heim >Datenbank >MySQL-Tutorial >Wie aktualisiere ich PostgreSQL-Tabellenzeilen mithilfe einer Unterabfrage mit bedingter Logik?
PostgreSQL-Tabellenzeilen mithilfe einer Unterabfrage aktualisieren
Stellen Sie sich ein Szenario vor, in dem Sie eine vorhandene Tabelle in einer Postgres-Datenbank haben und diese aktualisieren müssen seine Zeilen mithilfe von Werten, die aus einer Unterabfrage erhalten wurden. Diese Aufgabe kann mit einer prägnanten Update-Anweisung erledigt werden.
In diesem speziellen Fall besteht das Ziel darin, Zeilen in der Dummy-Tabelle mithilfe von Werten zu aktualisieren, die aus einer komplexen Unterabfrage abgerufen werden, die mehrere Tabellen verknüpft (cust_original, supp_original und partner_original). ) und wendet bedingte Logik an, um die Werte für die Spalten „Kunde“, „Lieferant“ und „Partner“ zu bestimmen.
Um diese Aktualisierung durchzuführen, können Sie Folgendes verwenden Syntax:
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;
Diese Anweisung nutzt eine Unterabfrage, um die Werte für die Spalten „Kunde“, „Lieferant“ und „Partner“ abzuleiten. Die Unterabfrage führt die erforderlichen Verknüpfungen und die bedingte Logik aus, wie in Ihrer bereitgestellten Einfügeanweisung angegeben.
Die äußere UPDATE-Anweisung wendet dann diese von der Unterabfrage abgeleiteten Werte auf die entsprechenden Spalten in der Dummy-Tabelle an und aktualisiert die vorhandenen Zeilen basierend auf adress_id-Feld.
Dieser Ansatz ist besonders nützlich, wenn Sie Tabellenzeilen basierend auf Werten aktualisieren müssen, die aus komplexen oder dynamischen Berechnungen abgeleitet wurden, oder wenn Sie mit großen Datensätzen arbeiten, wo dies traditionell der Fall ist Zeilenweise Aktualisierungen können ineffizient sein.
Das obige ist der detaillierte Inhalt vonWie aktualisiere ich PostgreSQL-Tabellenzeilen mithilfe einer Unterabfrage mit bedingter Logik?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!