mySQL :: insertar en la tabla, ¿datos de otra tabla?

Resuelto Hailwood asked hace 14 años • 7 respuestas

Me preguntaba si hay una manera de hacer esto únicamente 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);

Nota: q1 devolvería alrededor de 30.000 filas.

¿Hay alguna manera de hacer lo que estoy intentando arriba en SQL directo? ¿Simplemente extraer los datos directamente de una tabla (básicamente una tabla de datos sin procesar) e insertarlos en otra tabla (básicamente una tabla de datos procesados)?

Hailwood avatar Nov 22 '10 09:11 Hailwood
Aceptado
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'
zerkms avatar Nov 22 '2010 02:11 zerkms

para toda la fila

insertar en xyz seleccionar * de xyz2 donde id="1";

para la columna seleccionada

insertar en xyz(t_id,v_id,f_name) seleccionar t_id,v_id,f_name de xyz2 donde id="1";
Lokesh Deshmukh avatar Apr 17 '2015 18:04 Lokesh Deshmukh

Respondido por zerkms es el método correcto. Pero, si alguien busca insertar más columnas adicionales en la tabla, puede obtenerlas de lo siguiente:

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'

En la consulta anterior, hay 2 columnas adicionales denominadas email & current_time .

IamMHussain avatar Aug 09 '2017 20:08 IamMHussain