Ответ 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'
Мне было интересно, есть ли способ сделать это исключительно в 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? Просто вытащить данные прямо из одной таблицы (в основном, в таблицу необработанных данных) и вставить в другую таблицу (в основном обработанную таблицу данных)?
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'
для целых строк
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";
Ответ на 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.
INSERT INTO Table1 SELECT * FROM Table2
Вы можете сделать это, как показано ниже:
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'
Я пытаюсь делать подобные команды, но не для меня. Позвольте мне показать мою проблему:
У меня есть три таблицы, но я попробовал только с двумя:
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 сек)
Я понятия не имею об этой проблеме, какие-либо предложения?
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 выполненных запросов, 1 успешный, 0 ошибок, 0 предупреждений
Запрос: вставьте в предварительный_изображение (style_id, pre_image_status, file_extension, reviewer_id, uploader_id, is_deleted, last_updated) выберите...
5 строк затронуты
Время выполнения: 0,385 сек Время передачи: 0 сек Общее время: 0,386 сек