web-dev-qa-db-fra.com

mysql :: insert dans la table, les données d'une autre table?

Je me demandais s'il y avait un moyen de faire cela 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 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ée)?

171
Hailwood
INSERT INTO action_2_members (campaign_id, mobile, vote, vote_date)  
SELECT campaign_id, from_number, received_msg, date_received
  FROM `received_txts`
 WHERE `campaign_id` = '8'
375
zerkms

pour toute la rangée

insérer dans xyz select * from xyz2 où id = "1";

pour la colonne sélectionnée

insérer dans xyz (t_id, v_id, f_name) sélectionnez t_id, v_id, f_name de xyz2 où id = "1";
26
Lokesh Deshmukh

Répondu par zerkms est la bonne méthode. Mais si quelqu'un cherche à insérer plus de colonne supplémentaire dans le tableau, vous pouvez l'obtenir de la manière suivante:

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 .

9
IamMHussain
INSERT INTO Table1 SELECT * FROM Table2
4
Mher Arsh
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

Analyse

Nous pouvons utiliser la requête ci-dessus si nous voulons copier les données d'une table dans une autre table dans mysql

  1. Ici, la table source et la table de destination sont identiques, nous pouvons également utiliser différentes tables.
  2. Quelques colonnes que nous ne copions pas comme style_id et is_deleted, nous les avons donc sélectionnées en code dur dans une autre table.
  3. La table que nous avons utilisée dans la source contient également un champ à incrémentation automatique. Nous avons donc laissé cette colonne et elle est insérée automatiquement lors de l'exécution de la requête.

Résultats d'exécution

1 requêtes exécutées, 1 succès, 0 erreurs, 0 avertissements

Requête: insérer dans l 'image préliminaire (style_id, pre_image_status, extension de fichier, reviewer_id, uploader_id, is_deleted, last_updated), sélectionnez ...

5 rangée (s) affectée (s)

Temps d'exécution: 0.385 sec Temps de transfert: 0 sec Temps total: 0.386 sec

0
Amit Jain