sql >> Base de Datos >  >> RDS >> Mysql

MySQL INSERT INTO / ON DUPLICATE KEY con problema de instrucción SELECT

¿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.