これと同じくらい簡単なことでしょうか?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
on duplicate key
が不要になるように、重複がないことを確認する必要があります 。あなたが行っていたsum()+サブクエリは、単にcount(*)を実行しようとしていたように見えます。
あなたが得ていた特定のエラーは、size =sum(count)が原因でした。バッチ挿入では、これを行う正しい方法はsize =values(size)になります。values()
。
編集:
都市ごとに別のエントリを追加する場合、都市に一意のインデックスはなく、重複キーではとにかく何もしません。
(city、state)に一意のインデックスを追加すると、重複するキーの更新にon duplicate key update size=values(size)
上記のクエリに追加すると、各レコードが適切に更新されます。