Dans MySQL, comment copier un champ avec tous les enregistrements de TABLE1
à TABLE2
qui correspond à une clé primaire c'est-à-dire: EMPLOYEE no.
?
Essaye ça
INSERT INTO `table2` (`field_name2`) SELECT `field_name` FROM `table1`
Si vous voulez dire mettre à jour une colonne de table en utilisant une autre colonne de table, voici quelques options:
Une jointure:
UPDATE table1 AS t1
INNER JOIN table2 AS t2 ON t1.EmpoyeeNo = t2.EmployeeNo
SET t1.SomeColumn = t2.SomeColumn
Il peut également s'agir d'une jointure gauche:
UPDATE table1 AS t1
LEFT JOIN table2 AS t2 ON t1.EmpoyeeNo = t2.EmployeeNo
SET t1.SomeColumn = t2.SomeColumn
qui viderait essentiellement (mis à NULL) les valeurs où aucune correspondance ne s'est produite.
Une sous-requête:
UPDATE table1
SET SomeColumn = (
SELECT SomeColumn
FROM table2
WHERE EmployeeNo = table1.EmployeeNo
)
C'est équivalent à la solution de jointure gauche dans # 1.
Notez que dans tous les cas, on suppose qu'une ligne dans table1
ne peut pas correspondre à plus d'une ligne dans table2
.
La requête pour copier des données d'une table vers une autre est:
Insert into table2 (field1, field2) select field1, field2 from table1
Si vous souhaitez copier uniquement les valeurs sélectionnées, utilisez la clause where dans la requête
Insert into table2 (field1, field2) select field1, field2 from table1 where field1=condition
update
table1 t1
join table2 t2 on t2.field = t1.field
set
t1.field1 = t2.matchingfield
where
t1.whatever = t2.whatever
Vous pouvez l'utiliser pour copier tous les enregistrements de table1
en table2
avec une condition.
Insert into table2 select * from table1 where field1=condition