Heim > Datenbank > MySQL-Tutorial > Wie aktualisiere ich ein Tabellenfeld mit der Summe aus einer anderen Tabelle mithilfe von SQL?

Wie aktualisiere ich ein Tabellenfeld mit der Summe aus einer anderen Tabelle mithilfe von SQL?

Linda Hamilton
Freigeben: 2024-12-22 19:23:11
Original
601 Leute haben es durchsucht

How to Update a Table Field with the Sum from Another Table Using SQL?

SQL-Update-Abfrage mit Aggregatfunktion

Diese Frage untersucht die Verwendung von Aggregatfunktionen in SQL-Update-Abfragen. Der Benutzer versucht, ein Feld in einer Tabelle mit der Summe der Werte aus einer anderen Tabelle zu aktualisieren. Ihre Abfrage funktioniert jedoch aufgrund syntaktischer Probleme nicht.

Analyse

Die ursprüngliche Abfrage des Benutzers enthält zwei Hauptfehler:

  1. Mischung von SET- und GROUP BY-Klauseln: SET unterstützt GROUP BY nicht und umgekehrt.
  2. Direkte Verwendung von an Aggregatfunktion (SUM) in der SET-Klausel: SET erwartet einen einzelnen Wert, keine Aggregation.

Lösung

Um diese Probleme zu beheben, ist eine Unterabfrage erforderlich beschäftigt sein. Die Unterabfrage berechnet die Summe der Werte aus der zweiten Tabelle und gruppiert sie nach dem gemeinsamen Feld. Das Ergebnis dieser Unterabfrage wird dann mit der ersten Tabelle verknüpft und verwendet, um das Feld entsprechend zu aktualisieren.

Die richtige Abfrage:

UPDATE t1
SET t1.field1 = t2.field2Sum
FROM table1 t1
INNER JOIN (select field3, sum(field2) as field2Sum
   from table2
  group by field3) as t2
on t2.field3 = t1.field3
Nach dem Login kopieren

In dieser Abfrage:

  • Die Unterabfrage berechnet die Summe von Feld2 aus Tabelle2 für jeden eindeutigen Wert von Feld3.
  • Die äußere Abfrage verknüpft Tabelle1 mit Unterabfrageergebnis unter Verwendung des Feldes Feld3.
  • Das Feld1 von Tabelle1 wird mit der in der Unterabfrage berechneten Feld2Summe aktualisiert.

Das obige ist der detaillierte Inhalt vonWie aktualisiere ich ein Tabellenfeld mit der Summe aus einer anderen Tabelle mithilfe von SQL?. 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