insérer des données d’une table à une autre dans mysql

Je veux lire toutes les données d’une table et insérer des données dans une autre table. ma requête est

INSERT INTO mt_magazine_subscription ( magazine_subscription_id, subscription_name, magazine_id, status ) VALUES ( (SELECT magazine_subscription_id, subscription_name, magazine_id FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC), '1') 

mais j’ai une erreur qui

  #1136 - Column count doesn't match value count at row 1 

Aidez-moi, s’il vous plaît.

Vous pouvez utiliser la syntaxe INSERT … SELECT . Notez que vous pouvez citer «1» directement dans la partie SELECT.

 INSERT INTO mt_magazine_subscription ( magazine_subscription_id, subscription_name, magazine_id, status ) SELECT magazine_subscription_id, subscription_name, magazine_id, '1' FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC 

Si vous voulez insérer toutes les données d’une table dans une autre table,

 INSERT INTO destinationTable (SELECT * FROM sourceDbName.SourceTableName); 

Cela ne fonctionnera pas comme ça.

Lorsque vous essayez d’insérer la ligne à l’aide d’une requête, toutes les valeurs doivent être présentes dans la requête.

Avec le problème ci-dessus, vous voulez insérer magazine_subscription_id, subscription_name, magazine_id, status dans la requête select que vous avez magazine_subscription_id, subscription_name, magazine_id, status 1, ce n’est pas possible.

Si vous souhaitez insérer soit vous devez insérer en utilisant la requête de valeurs directes

En fait, la requête mysql pour les données de copie d’une table à une autre est
Insert into table2_name (column_names) select column_name from table1
où, les valeurs copiées de table1 à table2

S’il y a une clé primaire comme “id”, vous devez l’exclure, par exemple ma table php a: id, col2, col3, colonnes col4. id est la clé primaire si je lance ce code:

 INSERT INTO php (SELECT * FROM php); 

J’ai probablement cette erreur:

#1062 - Duplicate entry '1' for key 'PRIMARY'

Alors voici la solution, j’ai exclu la clé “id”:

 INSERT INTO php ( col2,col3,col4) (SELECT col2,col3,col4 FROM php2); 

Donc, ma nouvelle table php contient toutes les lignes de la table php2.

Essaye ça. Votre comportement dans le mauvais sens.

  INSERT INTO mt_magazine_subscription( magazine_subscription_id, subscription_name, magazine_id, status) VALUES ( (SELECT magazine_subscription_id, subscription_name, magazine_id,1 as status FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC) ) 
  INSERT INTO mt_magazine_subscription ( magazine_subscription_id, subscription_name, magazine_id, status ) VALUES ( (SELECT magazine_subscription_id, subscription_name, magazine_id,'1' as status FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC)) 
 INSERT INTO destination_table ( Field_1, Field_2, Field_3) SELECT Field_1, Field_2, Field_3 FROM source_table; 

MAIS ceci est un mauvais MYSQL

Faites ceci à la place:

  1. drop the destination table: DROP DESTINATION_TABLE;
  2. CREATE TABLE DESTINATION_TABLE AS (SELECT * FROM SOURCE_TABLE);
 INSERT INTO mt_magazine_subscription SELECT * FROM tbl_magazine_subscription ORDER BY magazine_subscription_id ASC