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.
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
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);
ç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
en Fait, la requête mysql pour copier des données d'une table à l'autre estInsert into table2_name (column_names) select column_name from table1
où, les valeurs copiées du tableau 1 au tableau 2
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.
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)
)
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 c'est un MAUVAIS MYSQL
faites ceci à la place:
drop the destination table: DROP DESTINATION_TABLE;
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