Je me demandais s'il existe un moyen de le faire uniquement en SQL:
q1 = SELECT campaign_id, from_number, received_msg, date_received
FROM `received_txts` WHERE `campaign_id` = '8';
INSERT INTO action_2_members (campaign_id, mobile, vote, vote_date)
VALUES(q1.campaign_id, q1.from_number, q1.received_msg, q1.date_received);
Remarque: q1 renverrait environ 30 000 lignes.
Existe-t-il un moyen de faire ce que je tente ci-dessus en sql droit? Pour simplement extraire les données directement d'une table (essentiellement une table de données brutes) et les insérer dans une autre table (essentiellement une table de données traitées)?
INSERT INTO ... SELECT
instruction?INSERT
pour toute la ligne
pour la colonne sélectionnée
la source
Répondu par zerkms est la bonne méthode. Mais, si quelqu'un cherche à insérer plus de colonnes supplémentaires dans le tableau, vous pouvez l'obtenir à partir de ce qui suit:
INSERT INTO action_2_members (`campaign_id`, `mobile`, `email`, `vote`, `vote_date`, `current_time`) SELECT `campaign_id`, `from_number`, '[email protected]', `received_msg`, `date_received`, 1502309889 FROM `received_txts` WHERE `campaign_id` = '8'
Dans la requête ci-dessus, il y a 2 colonnes supplémentaires nommées email & current_time .
la source
INSERT INTO Table1 SELECT * FROM Table2
la source
INSERT INTO preliminary_image (style_id,pre_image_status,file_extension,reviewer_id, uploader_id,is_deleted,last_updated) SELECT '4827499',pre_image_status,file_extension,reviewer_id, uploader_id,'0',last_updated FROM preliminary_image WHERE style_id=4827488
Une analyse
Nous pouvons utiliser la requête ci-dessus si nous voulons copier des données d'une table vers une autre table dans mysql
Résultats d'exécution
1 requêtes exécutées, 1 succès, 0 erreur, 0 avertissement
Requête: insérer dans preliminaire_image (style_id, pre_image_status, file_extension, reviewer_id, uploader_id, is_deleted, last_updated) select ...
5 ligne (s) affectée (s)
Temps d'exécution: 0,385 sec Temps de transfert: 0 sec Temps total: 0,386 sec
la source