J'ai deux tables, les deux ressemblant
id name value
===================
1 Joe 22
2 Derk 30
Je dois copier la valeur value
de tableA
la tableB
fonction du nom de contrôle dans chaque tableau.
Des conseils pour cette UPDATE
déclaration?
mysql
sql
sql-update
LeoSam
la source
la source
INNER JOIN
est parfait dans cette situation. J'ai également utiliséCONCAT_WS
pour fusionner le nom et le SKU duUPDATE 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
vous devez joindre les deux tables:
par exemple, vous voulez copier la valeur de
name
tableA danstableB
où ils ont le mêmeID
MISE À JOUR 1
MISE À JOUR 2
la source
where
clause ou modifier lawhere
clause en fonction de vos besoins ..La deuxième possibilité est,
la source
.name
est indexé sur les deux tables?La deuxième option est également possible si vous utilisez le mode de mise à jour sécurisé (et vous obtenez une erreur indiquant que vous avez essayé de mettre à jour une table sans WHERE qui utilise une colonne KEY), en ajoutant:
la source
la source
Stockez vos données dans la table temporaire
Maintenant, mettez à jour la colonne
la source
Dans mon cas, la solution acceptée était tout simplement trop lente. Pour une table avec 180K lignes, le taux de mises à jour était d'environ 10 lignes par seconde. C'est avec les index sur les éléments de jointure.
J'ai finalement résolu mon problème en utilisant une procédure:
J'espère que ça va aider quelqu'un à l'avenir comme ça m'a aidé
la source
Si vous avez un champ commun dans les deux tableaux, c'est si facile! ....
Table-1 = table où vous souhaitez mettre à jour. Table-2 = table d'où vous prenez les données.
la source