204 votes

MySQL :: insérer dans la table, les données d'une autre table?

Je me demandais s'il était possible 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 retournerait environ 30 000 lignes.

Est-il possible de faire ce que j'essaie de faire en SQL brut ? De simplement extraire les données directement d'une table (essentiellement une table de données brutes) et de les insérer dans une autre table (essentiellement une table de données traitées) ?

442voto

zerkms Points 105994
INSÉRER DANS action_2_members (campaign_id, mobile, vote, vote_date)  
SÉLECTIONNER campaign_id, from_number, received_msg, date_received
  DE `received_txts`
 OÙ `campaign_id` = '8'

1 votes

@InSane : 1) donne une réponse 2) corrige le format de la question. Ne rate pas l'ordre la prochaine fois ;-)

0 votes

Ha ha :-) oui..je n'ai jamais réussi à trier mes priorités! :-D

1 votes

En train de travailler ! +1 Parfait et très rapide ! Merci mec. Juste eu à enlever les crochets des champs SELECT...

40voto

Lokesh Deshmukh Points 261

Pour toute la ligne

insert into xyz select \* from xyz2 where id="1";

pour la colonne choisie

insert into xyz(t\_id,v\_id,f\_name) select t\_id,v\_id,f\_name from xyz2 where id="1";

17voto

IamMHussain Points 459

Répondu par zerkms est la méthode correcte. Mais, si quelqu'un cherche à insérer une colonne supplémentaire 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`, 'example@domain.xyz', `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.

7voto

Mher Arsh Points 303
INSÉRER DANS Table1 SÉLECTIONNER * DE Table2

2voto

Amit Jain Points 1569
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 des données d'une table vers une autre table en mysql

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

Résultats de l'exécution

1 requête exécutée, 1 succès, 0 erreurs, 0 avertissements

Requête : insérer dans preliminary_image (style_id, pre_image_status, file_extension, reviewer_id, uploader_id, is_deleted, last_updated) sélectionner ...

5 ligne(s) affectée(s)

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X