Би ли проработило нещо толкова просто като това?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
трябва да гарантира, че няма дубликати, така че да няма нужда от on duplicate key
. Нещото sum() + subquery, което правехте, изглежда, че просто се опитвате да направите count(*).
Конкретната грешка, която получавате, беше поради size=sum(count). При пакетно вмъкване правилният начин да направите това ще бъде size=values(size), вижте документите на values()
.
РЕДАКТИРАНЕ:
Ако добавя друг запис за всеки град, тогава няма уникален индекс за града и дублираният ключ така или иначе няма да направи нищо.
ако добавите уникален индекс към (град, щат), тогава можете да добавите on duplicate key update size=values(size)
към горната заявка и ще актуализира всеки запис на място.