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!