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

je veux lire toutes les données d'un tableau 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 que

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

merci de m'aider.

45
demandé sur Gustav Bertram 2013-02-16 11:00:51

10 réponses

Vous pouvez utiliser INSERT...Sélectionnez syntaxe. 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 
93
répondu Gustav Bertram 2013-02-16 07:17:45

si vous voulez insérer toutes les données d'une table à une autre il y a un sql très simple

INSERT INTO destinationTable  (SELECT * FROM sourceDbName.SourceTableName);
14
répondu Ravi 2016-10-15 07:17:46

ça ne marchera pas comme ça.

quand vous essayez d'insérer la ligne en utilisant une requête toutes les valeurs doivent être là dans la requête.

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

si vous voulez insérer soit vous avez besoin d'insérer en utilisant la requête des valeurs directes

5
répondu Praveen 2017-07-12 14:23:45

en Fait, la requête mysql pour copier des données d'une table à l'autre est

Insert into table2_name (column_names) select column_name from table1

où, les valeurs copiées du tableau 1 au tableau 2

3
répondu php 2014-08-24 18:48:29

S'il y a une clé primaire comme "id" vous devez l'exclure par exemple ma table php a: id, col2,col3,col4 colonnes. id est la clé primaire donc, si j'exécute ce code:

INSERT INTO php  (SELECT * FROM php);

j'ai probablement obtenir cette erreur:

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

donc voici la solution, j'ai exclu la touche "id":

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

donc ma nouvelle table php a toutes les lignes de la table php2.

1
répondu BARIS KURT 2016-12-25 23:03:11

Essayez ceci. Votre faire 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)
    )
0
répondu Amit Garg 2013-02-16 07:07:28
  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))
0
répondu arvin_codeHunk 2013-02-16 07:10:57
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));
0
répondu Guryash Singh 2018-09-26 17:36:45
INSERT INTO destination_table ( 
      Field_1, 
      Field_2, 
      Field_3) 
SELECT Field_1, 
      Field_2, 
      Field_3 
      FROM source_table;

MAIS c'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);
-1
répondu Naveen Rai 2013-09-23 19:09:06
INSERT INTO mt_magazine_subscription SELECT *
       FROM tbl_magazine_subscription 
       ORDER BY magazine_subscription_id ASC
-2
répondu sudhanshu 2015-01-08 10:46:36