Mysql:: insert в таблицу, данные из другой таблицы?

Мне было интересно, есть ли способ сделать это исключительно в 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);

Примечание: q1 вернет около 30 тыс. строк.

Есть ли способ сделать то, что я пытаюсь сделать в прямом sql? Просто вытащить данные прямо из одной таблицы (в основном, в таблицу необработанных данных) и вставить в другую таблицу (в основном обработанную таблицу данных)?

Ответ 1

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'

Ответ 2

для целых строк

  

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

для выбранного столбца

insert into xyz(t_id,v_id,f_name) select t_id,v_id,f_name from xyz2 where id="1";

Ответ 3

Ответ на zerkms - правильный метод. Но если кто-то хочет добавить дополнительный столбец в таблицу, вы можете получить его из следующего:

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'

В приведенном выше запросе есть два дополнительных столбца с именем электронная почта и current_time.

Ответ 4

INSERT INTO Table1 SELECT * FROM Table2

Ответ 5

Вы можете сделать это, как показано ниже:

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'

Ответ 6

Я пытаюсь делать подобные команды, но не для меня. Позвольте мне показать мою проблему:

У меня есть три таблицы, но я попробовал только с двумя:

CREATE TABLE 'environment_fid' (
  'ID' mediumint(9) unsigned AUTO_INCREMENT,
  'FID_environment' mediumint(9) unsigned,
  'FID_monster' mediumint(9) unsigned ,
  PRIMARY KEY  ('ID')
) ENGINE=MyISAM;

DROP TABLE IF EXISTS 'environment';
CREATE TABLE 'environment' (
  'ID' mediumint(9) unsigned AUTO_INCREMENT,
  'name' text NOT NULL,
  PRIMARY KEY  ('ID')
) ENGINE=MyISAM;

Моя команда для INSERT INTO была:

INSERT INTO environment_fid (FID_environment) VALUES SELECT ID FROM environment WHERE name='planes';

Но я получил: ОШИБКА 1064 (42000): у вас есть ошибка в вашем синтаксисе SQL; проверьте руководство, соответствующее вашей версии сервера MySQL, на предмет правильного синтаксиса для использования рядом с "SELECT ID FROM Environment WHERE name = 'planes" "в строке 1

Тем не менее, когда я положил по частям:

INSERT INTO environment_fid (FID_environment) VALUES (78);

Запрос в порядке, затрагивается 1 строка (0,00 сек)

а также

 SELECT ID FROM environment WHERE name='planes';

+ ---- + | ID | + ---- + | 66 | + ---- + 1 строка в наборе (0,00 сек)

Я понятия не имею об этой проблеме, какие-либо предложения?

Ответ 7

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

анализ

Мы можем использовать запрос выше, если мы хотим скопировать данные из одной таблицы в другую в MySQL

  1. Здесь исходная и конечная таблицы совпадают, мы можем использовать разные таблицы.
  2. Несколько столбцов, которые мы не копируем, например style_id и is_deleted, поэтому мы выбрали их жестко закодированные из другой таблицы
  3. Таблица, которую мы использовали в источнике, также содержит поле автоинкремента, поэтому мы оставили этот столбец, и он автоматически вставляется при выполнении запроса.

Результаты выполнения

1 выполненных запросов, 1 успешный, 0 ошибок, 0 предупреждений

Запрос: вставьте в предварительный_изображение (style_id, pre_image_status, file_extension, reviewer_id, uploader_id, is_deleted, last_updated) выберите...

5 строк затронуты

Время выполнения: 0,385 сек Время передачи: 0 сек Общее время: 0,386 сек