Zou zoiets simpels als dit werken?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
moet ervoor zorgen dat er geen duplicaten zijn, zodat er geen noodzaak is voor on duplicate key
. De som() + subquery die je aan het doen was, ziet eruit alsof je gewoon probeerde te tellen(*).
De specifieke fout die u kreeg, was vanwege de size=sum(count). In een batch-insert is de juiste manier om dit te doen size=values(size), zie de documenten op values()
.
BEWERKEN:
Als het voor elke stad een ander item toevoegt, is er geen unieke index voor de stad en zal een dubbele sleutel sowieso niets doen.
als u een unieke index toevoegt aan (stad, staat) dan kunt u on duplicate key update size=values(size)
toevoegen naar de bovenstaande vraag en het zal elk record op zijn plaats bijwerken.