J'ai deux tables, avec une même colonne nommée user_name, en disant table_a, table_b. Je veux, copier de table_b, column_b_1, column_b2, vers table_b1, column_a_1, column_a_2, où le nom d'utilisateur est le même, comment le faire dans l'instruction SQL?
Réponses
Trop de publicités?Tant que vous avez adapté les index en place cela devrait fonctionner très bien:
UPDATE table_a
SET
column_a_1 = (SELECT table_b.column_b_1
FROM table_b
WHERE table_b.user_name = table_a.user_name )
, column_a_2 = (SELECT table_b.column_b_2
FROM table_b
WHERE table_b.user_name = table_a.user_name )
WHERE
EXISTS (
SELECT *
FROM table_b
WHERE table_b.user_name = table_a.user_name
)
Mise à JOUR en 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.
Dans la clause WHERE EXISTS,
Est-ce obligatoire "SELECT * FROM table_b WHERE table_b.nom_utilisateur = table_a.nom_utilisateur"
toute différence si vous ne sélectionnez que toutes les lignes d'une colonne, telles que
"SELECT nom_utilisateur FROM table_b WHERE table_b.nom_utilisateur = table_un.nom_utilisateur"
La différence, je veux dire la performance sera plus rapide?