Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

MySQL INSERT INTO / ON DUPLICATE KEY com problema de instrução SELECT


Será que algo tão simples como isso funcionaria?
insert into cities (city, state, size)
select city, state, count(*) as size from listings
group by city, state

group by deve garantir que não haja duplicatas para que não haja necessidade de on duplicate key . A coisa de sum() + subconsulta que você estava fazendo parece que você estava apenas tentando fazer uma contagem(*).

O erro específico que você estava recebendo era por causa do tamanho =soma (contagem). Em uma inserção em lote, a maneira correta de fazer isso seria size=values(size), consulte os documentos em values() .

EDITAR:

Se estiver adicionando outra entrada para cada cidade, não haverá um índice exclusivo na cidade e na chave duplicada não fará nada de qualquer maneira.

se você adicionar um índice exclusivo em (cidade, estado), poderá adicionar on duplicate key update size=values(size) para a consulta acima e atualizará cada registro no local.