mysql ::插入表中,来自另一个表的数据?


186

我想知道是否有一种方法可以完全在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将返回约3万行。

有什么办法可以在直式sql中完成上述操作?要直接从一个表(基本上是原始数据表)中提取数据并插入到另一个表(基本上是已处理数据表)中?

Answers:


400
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'

1
@InSane:1)提供答案2)更正问题格式。下次不要错过订单;-)
zerkms 2010年

哈哈:-)是的..我从来没有整理好我的优先事项!:-D
Jagmag

1
加工!+1完美而且非常快!谢了哥们。只是必须从SELECT字段中删除括号...
某人2013年

@zerkms; 触发器将适用于此INSERT INTO ... SELECT语句吗?
haccks

2
@haccks我认为这就像是“正常”一样INSERT
zerkms

30

对于整行

插入xyz中,从xyz2中选择*,其中id =“ 1”;

对于选定的列

插入到xyz(t_id,v_id,f_name)中,从xyz2中选择t_id,v_id,f_name,其中id =“ 1”;

1
如果已经存在具有匹配主键的记录,则整行方法将失败。
HotN

您找到解决方案了吗?<如果已经存在具有匹配主键的记录,则整行方法将失败。>
Shivdhwaj Pandey

10

zerkms的回答是正确的方法。但是,如果有人希望在表中插入更多额外的列,则可以从以下代码中获取:

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'

在上面的查询中,还有2个额外的列,分别名为emailcurrent_time


2
如果我想插入三行数据,这些行中的数据与select中的值相同,但对于添加的“ additional”列(例如email和current_time)却具有不同的值,该怎么办?
xxstevenxo '18

4
INSERT INTO Table1 SELECT * FROM Table2

这是一个非常低质量的答案。另外,与已接受的答案不同,它甚至不尝试与问题中包含的信息相关。
迈克

0
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

分析

如果我们想将数据从一个表复制到另一个表中,我们可以使用上面的查询

  1. 这里的源表和目标表是相同的,我们也可以使用不同的表。
  2. 我们不复制的几栏像style_idis_deleted这样因此我们从另一个表中对其进行了硬编码
  3. 我们在源代码中使用的表还包含自动递增字段,因此我们离开该列,并在执行查询时自动将其插入。

执行结果

已执行1个查询,1个成功,0个错误,0个警告

查询:插入primary_image(style_id,pre_image_status,file_extension,reviewer_id,uploader_id,is_deleted,last_updated)中选择...

受影响的5行

执行时间:0.385秒传输时间:0秒总时间:0.386秒

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.