Eu tenho duas mesas, ambas parecendo
id name value
===================
1 Joe 22
2 Derk 30
Preciso copiar o valor de value
from tableA
para com tableB
base no nome da verificação em cada tabela.
Alguma dica para esta UPDATE
afirmação?
mysql
sql
sql-update
LeoSam
fonte
fonte
INNER JOIN
é perfeito nesta situação. Eu também utilizadoCONCAT_WS
para nomear merge pruduct e SKU de outra tabelaUPDATE participants_registrations INNER JOIN participants ON participants.id = participants_registrations.participantId INNER JOIN registrations ON registrations.id = participants_registrations.registrationId LEFT JOIN groups ON (groups.id = registrations.groupId) SET registrations.groupId = groups.id, registrations.groupName = groups.name, participants.memberOfGroupName = groups.name
você precisa juntar as duas tabelas:
por exemplo, você deseja copiar o valor da
name
tabelaA paratableB
onde eles têm o mesmoID
ATUALIZAÇÃO 1
ATUALIZAÇÃO 2
fonte
where
cláusula ou modificar awhere
cláusula dependendo de suas necessidades ..A segunda possibilidade é,
fonte
.name
estiver indexado nas duas tabelas?A segunda opção também é viável se você estiver usando o modo de atualizações seguras (e estiver recebendo um erro indicando que tentou atualizar uma tabela sem um WHERE que usa uma coluna KEY), adicionando:
fonte
fonte
Armazene seus dados na tabela temporária
Agora atualize a coluna
fonte
No meu caso, a solução aceita era muito lenta. Para uma tabela com 180 mil linhas, a taxa de atualizações era de cerca de 10 linhas por segundo. Isso ocorre com os índices nos elementos de junção.
Finalmente resolvi meu problema usando um procedimento:
Espero que ajude alguém no futuro, como me ajudou
fonte
Se você tem um campo comum em ambas as tabelas, é muito fácil! ....
Tabela-1 = tabela onde você deseja atualizar. Tabela-2 = tabela de onde você toma os dados.
fonte