sql >> Database >  >> RDS >> Mysql

MySQL INSERT INTO / ON DUPLICATE KEY met probleem met SELECT-instructie

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.



  1. ik moet een django en mysql configureren in pycharm IDE

  2. Hoe een identiteitskolom aan tabel toe te voegen door TSQL en GUI in SQL Server - SQL Server / T-SQL-zelfstudie, deel 40

  3. Leer hoe u omgaat met uitzonderingen in PL/SQL

  4. Globale query-time-out in MySQL 5.6