Mysql
 sql >> Base de données >  >> RDS >> Mysql

MySQL INSERT INTO / ON DUPLICATE KEY avec problème d'instruction SELECT

Est-ce que quelque chose d'aussi simple que ça fonctionnerait ?

insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state

group by doit s'assurer qu'il n'y a pas de doublons afin qu'il n'y ait pas besoin de on duplicate key . La chose somme() + sous-requête que vous faisiez semble que vous essayiez juste de faire un comptage (*).

L'erreur spécifique que vous obteniez était due à size=sum(count). Dans une insertion par lots, la bonne façon de procéder serait size=values(size), voir les docs sur values() .

MODIFIER :

S'il ajoute une autre entrée pour chaque ville, il n'y a pas d'index unique sur la ville et la clé en double ne fera rien de toute façon.

si vous ajoutez un index unique sur (ville, état), vous pouvez ajouter on duplicate key update size=values(size) à la requête ci-dessus et il mettra à jour chaque enregistrement en place.