Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Mengemas kini Jadual dengan Jumlah Nilai daripada Jadual Lain dalam SQL?

Bagaimanakah Saya Boleh Mengemas kini Jadual dengan Jumlah Nilai daripada Jadual Lain dalam SQL?

Linda Hamilton
Linda Hamiltonasal
2024-12-18 02:37:14217semak imbas

How Can I Update a Table with the Sum of Values from Another Table in SQL?

Mengagregatkan dalam Pertanyaan KEMASKINI SQL: Penyelesaian Ringkas

Dalam operasi pangkalan data, mengemas kini nilai jadual berdasarkan fungsi agregat boleh menimbulkan cabaran. Mari kita terokai senario biasa di mana matlamatnya adalah untuk menetapkan nilai dalam satu jadual kepada jumlah nilai dalam jadual lain.

Pertimbangkan pertanyaan berikut:

UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3

Walaupun intuitif, pertanyaan ini akan gagal disebabkan oleh dua kekangan utama: SET tidak menyokong fungsi agregat seperti SUM dan GROUP BY tidak dibenarkan dalam KEMASKINI pertanyaan.

Untuk menyelesaikan isu ini, kami boleh menggunakan subkueri untuk mengira jumlah agregat dan kemudian menggunakan nilai yang dikemas kini dalam pertanyaan KEMASKINI.

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

Dalam pertanyaan yang diperhalusi ini:

  • Subkueri mengira jumlah agregat untuk setiap nilai unik dalam table2.field3.
  • Hasil kemas kini, disimpan sebagai field2Sum, dicantumkan kembali ke table1 menggunakan medan lajur biasa3.
  • Syarat JOIN memastikan bahawa nilai SUM daripada jadual2 diberikan kepada yang betul baris yang sepadan dalam jadual1.

Dengan menggunakan pendekatan ini, anda boleh berjaya melakukan kemas kini agregat dalam SQL dan mencapai hasil manipulasi data yang diingini.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Mengemas kini Jadual dengan Jumlah Nilai daripada Jadual Lain dalam SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn