Saya mencoba mengatur nilai dalam satu tabel ke jumlah nilai di tabel lain. Sesuatu seperti ini:
UPDATE table1
SET field1 = SUM(table2.field2)
FROM table1
INNER JOIN table2 ON table1.field3 = table2.field3
GROUP BY table1.field3
Tentu saja, seperti ini, itu tidak akan berfungsi - SET
tidak mendukung SUM
dan tidak mendukung GROUP BY
.
Aku harus tahu ini, tapi pikiranku mulai kosong. Apa yang saya lakukan salah?
sql
sql-server
tsql
Margaret
sumber
sumber
Jawaban:
sumber
Menggunakan:
sumber
Atau Anda bisa menggunakan campuran jawaban JBrooks dan OMG Pony :
sumber
Situasi yang baik untuk menggunakan CROSS APPLY
sumber
Saya tahu pertanyaannya adalah SQL Server tetapi hati-hati dengan UPDATE dengan JOIN jika Anda menggunakan PostgreSQL . Jawaban @JBrooks tidak akan berfungsi:
Anda harus menyesuaikannya dengan:
Lihat parameter
from_list
di dokumen untuk mengetahui mengapaFROM
PostgreSQL dianggap sebagai self-join: https://www.postgresql.org/docs/9.5/static/sql-update.html#AEN89239sumber
Anda juga bisa menggunakan CTE seperti di bawah ini.
sumber