Maison >base de données >tutoriel mysql >Comment puis-je copier efficacement des données entre des tables SQL en fonction des noms d'utilisateur correspondants ?
Transférer efficacement des données entre des tables SQL à l'aide de noms d'utilisateur correspondants
Votre base de données contient deux tables, table_a
et table_b
, chacune avec une colonne user_name
. L'objectif est de copier les données de column_b_1
et column_b_2
dans table_b
vers column_a_1
et column_a_2
dans table_a
, respectivement, en faisant correspondre les lignes basées sur des valeurs user_name
identiques.
En supposant que les index appropriés soient en place pour des performances optimales, une seule instruction SQL peut accomplir ceci :
<code class="language-sql">UPDATE table_a SET column_a_1 = (SELECT b.column_b_1 FROM table_b b WHERE b.user_name = table_a.user_name), column_a_2 = (SELECT b.column_b_2 FROM table_b b WHERE b.user_name = table_a.user_name) WHERE EXISTS (SELECT 1 FROM table_b b WHERE b.user_name = table_a.user_name);</code>
Cette requête utilise des sous-requêtes corrélées pour récupérer les valeurs correctes de table_b
pour chaque ligne de table_a
. La sous-requête EXISTS
garantit que les mises à jour n'ont lieu que pour les noms d'utilisateur présents dans les deux tables.
Pour les ensembles de données très volumineux où les performances sont essentielles, envisagez cette stratégie alternative :
JOIN
pour combiner les lignes pertinentes de table_a
et table_b
.table_a
.table_a
.Bien que cette méthode implique plus d'étapes, elle offre souvent des performances supérieures avec des ensembles de données étendus.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!