Heim > Datenbank > MySQL-Tutorial > Wie kann ich Tabellendatensätze mithilfe eines CTE in SQL aktualisieren?

Wie kann ich Tabellendatensätze mithilfe eines CTE in SQL aktualisieren?

Susan Sarandon
Freigeben: 2025-01-08 14:43:10
Original
856 Leute haben es durchsucht

How Can I Update Table Records Using a CTE in SQL?

Verwenden Sie CTE, um Tabellendatensätze zu aktualisieren

In SQL können Sie Common Table Expressions (CTE) und UPDATE-Anweisungen verwenden, um Daten in einer Tabelle zu ändern. Ein CTE ist ein Alias ​​oder eine temporäre Ergebnismenge, auf die in Abfragen verwiesen werden kann.

Um Datensätze in einer Tabelle mithilfe von CTE zu aktualisieren, können Sie eine Abfrage wie diese verwenden:

<code class="language-sql">WITH CTE_DocTotal AS (
  SELECT SUM(Sale + VAT) AS DocTotal
  FROM PEDI_InvoiceDetail
  GROUP BY InvoiceNumber
)

UPDATE PEDI_InvoiceDetail
SET DocTotal = CTE_DocTotal.DocTotal;</code>
Nach dem Login kopieren

Diese Abfrage aktualisiert den Wert der DocTotal-Spalte in der PEDI_InvoiceDetail-Tabelle mit dem Wert der DocTotal-Spalte im CTE_DocTotal CTE.

In Ihrem Fall fehlt jedoch in der CTE-Definition eine Verknüpfung zwischen den Tabellen CTE und PEDI_InvoiceDetail. Um diese Verknüpfung herzustellen, fügen Sie dem CTE wie folgt eine Partitionierungsklausel hinzu:

<code class="language-sql">WITH T AS (
  SELECT InvoiceNumber,
         DocTotal,
         SUM(Sale + VAT) OVER(PARTITION BY InvoiceNumber) AS NewDocTotal
  FROM PEDI_InvoiceDetail
)

UPDATE T
SET DocTotal = NewDocTotal;</code>
Nach dem Login kopieren

Diese geänderte Abfrage erstellt einen neuen CTE mit dem Namen T, der die InvoiceNumber-Spalte aus der PEDI_InvoiceDetail-Tabelle enthält. Dies ermöglicht die Partitionierung von CTEs nach InvoiceNumber und stellt sicher, dass der NewDocTotal-Wert für jede Rechnung korrekt berechnet wird.

Die UPDATE-Anweisung wendet dann den berechneten NewDocTotal-Wert auf die DocTotal-Spalte in der PEDI_InvoiceDetail-Tabelle an.

Das obige ist der detaillierte Inhalt vonWie kann ich Tabellendatensätze mithilfe eines CTE in SQL aktualisieren?. 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