sql >> Databáze >  >> RDS >> Mysql

MySQL INSERT INTO / ON DUPLICATE KEY s problémem s příkazem SELECT

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



  1. MySQL - Zvýšit hodnotu sloupce nebo vložit data, pokud neexistují

  2. Jak udělat MySQL Looped Připojte se ke kterým testům, pokud jsou výsledky kompletní?

  3. Chyba pip instalace mysqlclient systému Mac OS Sierra virtualenv (python 2.7).

  4. Chyba importu MySQLdb a Python