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 eu une erreur
#1136 - Column count doesn't match value count at row 1
aidez-moi, s'il vous plaît.
Vous pouvez utiliser INSERT ... SELECT syntax. 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, il y a tout simplement SQL
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 figurer dans la requête.
Avec le problème ci-dessus que vous voulez insérermagazine_subscription_id, subscription_name, magazine_id, status
in 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 devez insérer en utilisant une requête de valeurs directes
S'il existe une clé primaire telle que "id", vous devez l'exclure. Par exemple, ma table php contient: id, col2, col3, col4. id est la clé primaire, donc 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 a toutes les lignes de la table php2 plus.
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));
Essaye ça. Vous faites de la mauvaise façon.
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)
)