Mise à jour de la table de valeurs à partir d'une autre table avec le même nom d'utilisateur
J'ai deux tables, avec une même colonne nommée user_name
, en disant table_a
, table_b
.
Je veux, copie de table_b
, column_b_1
, column_b2
, à table_b1
, column_a_1
, column_a_2
, respectivement, où le user_name
est le même, la façon de le faire dans l'instruction SQL?
Vous devez vous connecter pour publier un commentaire.
Aussi longtemps que vous avez adapté les index en place cela devrait fonctionner très bien:
Mise à JOUR dans sqlite3 ne prend pas en charge une clause from, ce qui en fait un peu plus de travail que dans les autres SGBDR.
Si la performance n'est pas satisfaisante, une autre option pourrait être de construire de nouvelles lignes pour les table_a l'aide d'une sélection et à rejoindre table_a dans une table temporaire. Ensuite, supprimez les données de table_a et de repeupler de la temporaire de.
column_a_1 = (SELECT table_b.column_b_1 FROM table_b WHERE table_b.user_name = table_a.user_name )
À partir de l'sqlite version 3.15 la syntaxe pour Mise à JOUR admet une colonne " nom de la liste
dans l'ENSEMBLE de la partie afin de la requête peut être écrite comme
qui n'est pas seulement plus courte, mais aussi plus rapide
Il y a une bien meilleure solution pour mettre à jour une table à partir d'une autre table:
user_name
dans la question d'origine). Au lieu de cela, cela va définir toutes les valeurs correspondantes dans la table en cours de mise à jour pour ceux de l'un enregistrement dans la table source. Essayé d'inscription de la colonne commune et l'ajout d'unWHERE
état, mais il n'a pas de travail.(SELECT song_id FROM a WHERE guid=record_performance.guid)