web-dev-qa-db-fra.com

MYSQL, Copier les champs sélectionnés d'une table dans une autre

Dans MySQL, comment copier un champ avec tous les enregistrements de TABLE1 à TABLE2 qui correspond à une clé primaire c'est-à-dire: EMPLOYEE no.?

33
ix3

Essaye ça

INSERT INTO `table2` (`field_name2`) SELECT `field_name` FROM `table1`
43
Anand

Si vous voulez dire mettre à jour une colonne de table en utilisant une autre colonne de table, voici quelques options:

  1. 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.

  2. 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.

63
Andriy M

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


23
php
update
  table1 t1
  join table2 t2 on t2.field = t1.field
set
  t1.field1 = t2.matchingfield
where
  t1.whatever = t2.whatever
6
brigitte18

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
2
Ntaganira