Apakah sesuatu yang sederhana seperti ini akan berhasil?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
harus memastikan bahwa tidak ada duplikat sehingga tidak perlu on duplicate key
. Hal sum() + subquery yang Anda lakukan sepertinya Anda hanya mencoba melakukan hitungan(*).
Kesalahan spesifik yang Anda dapatkan adalah karena size=sum(count). Dalam batch, masukkan cara yang benar untuk melakukan ini adalah size=values(size), lihat dokumen di values()
.
EDIT:
Jika menambahkan entri lain untuk setiap kota maka tidak ada indeks unik di kota dan pada kunci duplikat tidak akan melakukan apa-apa.
jika Anda menambahkan indeks unik pada (kota, negara bagian) maka Anda dapat menambahkan on duplicate key update size=values(size)
ke kueri di atas dan itu akan memperbarui setiap catatan di tempatnya.