Fungovalo by něco tak jednoduchého?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
měli zajistit, že neexistují žádné duplikáty, takže není potřeba on duplicate key
. Součet() + dílčí dotaz, který jste dělali, vypadá, jako byste se jen pokoušeli počítat(*).
Konkrétní chyba, kterou jste dostávali, byla způsobena velikostí =součet (počet). V dávkovém vložení by správný způsob, jak to udělat, byl size=values(size), viz dokumenty na values()
.
EDIT:
Pokud přidává další položku pro každé město, pak neexistuje jedinečný index pro město a duplicitní klíč stejně nic neudělá.
pokud přidáte jedinečný index na (město, stát), můžete přidat on duplicate key update size=values(size)
na výše uvedený dotaz a aktualizuje každý záznam na místě.