Rumah >pangkalan data >tutorial mysql >Bagaimanakah Saya Boleh Menggunakan Fungsi Agregat dalam Pernyataan SQL UPDATE?

Bagaimanakah Saya Boleh Menggunakan Fungsi Agregat dalam Pernyataan SQL UPDATE?

Linda Hamilton
Linda Hamiltonasal
2024-12-25 00:17:08890semak imbas

How Can I Use Aggregate Functions in SQL UPDATE Statements?

Cara Menggunakan Fungsi Agregat dalam Pertanyaan KEMASKINI SQL

Dalam SQL, selalunya perlu mengemas kini nilai jadual berdasarkan data agregat daripada yang lain meja. Walau bagaimanapun, pertanyaan KEMASKINI standard tidak menyokong fungsi agregat seperti SUM atau GROUP BY.

Untuk menyelesaikannya, ikut langkah berikut:

Contoh:

Pertimbangkan senario berikut: Anda ingin mengemas kini lajur medan1 dalam jadual jadual1 dengan jumlah nilai medan2 untuk setiap medan3 daripada jadual table2.

Pelaksanaan Salah:

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

Pertanyaan ini tidak betul kerana klausa SET tidak boleh menggunakan fungsi agregat dan klausa GROUP BY tidak disokong dalam konteks ini.

Betul Pelaksanaan:

Untuk mencapai ini dengan betul, gunakan subkueri untuk mengira agregat dan sertainya dengan jadual sasaran untuk kemas kini:

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 

Pertanyaan ini mula-mula mencipta subkueri yang mengira jumlah medan2 untuk setiap medan3 dalam jadual2, mengagregatkan data dengan berkesan. Hasilnya disimpan dalam jadual sementara, yang kemudiannya digabungkan dengan jadual1 menggunakan lajur medan3 sebagai syarat gabungan. Lajur medan1 dalam jadual1 kemudian dikemas kini dengan nilai field2Sum yang sepadan.

Atas ialah kandungan terperinci Bagaimanakah Saya Boleh Menggunakan Fungsi Agregat dalam Pernyataan SQL UPDATE?. 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