PostgreSQL
 sql >> Datenbank >  >> RDS >> PostgreSQL

Wie füge ich in eine Tabelle aus einer anderen Tabelle ein, indem ich Werte abgleiche?

Sie können zusätzliche Tabellen in einem UPDATE hinzufügen -Anweisung, die diese bevorzugte Form berücksichtigt:

UPDATE books b
SET    author_id = a.author_id
FROM   authors a
WHERE  b.author = a.author_name;

Drei Gründe:

  • Es ist sicherer. Ihre Abfrage schreibt einen NULL-Wert in jede Zeile, in der kein passender Autor gefunden wird. Das spielt in Ihrem Fall keine Rolle, kann aber möglicherweise zu Datenverlusten bei ähnlichen Abfragen führen, bei denen Sie bereits Daten in der zu aktualisierenden Spalte haben. Meine Alternative tut nichts, wenn kein passender Autor gefunden wird.

  • Es ist schneller. Das oben für einen. Aber auch, weil Unterabfragen korreliert wie Sie Skala schrecklich haben. Das Zusammenführen einer Tabelle ist im Allgemeinen schneller, insbesondere bei mehr als ein paar Zeilen.

  • Es ist sauberer und lässt sich leichter an zusätzliche Spalten anpassen.