¿Funcionaría algo tan simple como esto?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state
group by
debe asegurarse de que no haya duplicados para que no haya necesidad de on duplicate key
. La suma() + subconsulta que estabas haciendo parece que solo estabas tratando de hacer un conteo (*).
El error específico que estaba recibiendo se debía al tamaño =suma (recuento). En un lote, inserte la forma correcta de hacer esto sería tamaño =valores (tamaño), consulte los documentos en values()
.
EDITAR:
Si está agregando otra entrada para cada ciudad, entonces no hay un índice único en la ciudad y la clave duplicada no hará nada de todos modos.
si agrega un índice único en (ciudad, estado), puede agregar on duplicate key update size=values(size)
a la consulta anterior y actualizará cada registro en su lugar.