-1
我需要从两个表中选择数据并插入到一个表中。同样的问题被问及多次回答,但我有这样的要求。通过从多个表中选择数据插入到一个表中
我总共有三个表T1,T2,T3。 我的最终目标是将数据插入到表T3中。表T3中共有15列。在这15列中,我需要填充来自表T2的14列数据和最后一列需要连接表T1和T2的数据,我需要从中获取该列的数据。请发现以下查询
CREATE procedure proc_name
BEGIN
Insert into T3(
id,
col1,
col2,
....
...
col14)
select
(select id from T1 INNER JOIN T2 ON
(T1.somecol1=T2.somecol1,
T1. somecol2= T2.somecol2,
T1.somecol3 = T2.somecol3,
T1.somecol4= T2.somecol4)
ORDER BY T2.somecol5 LIMIT 1),
T2.col1,
T2.col2,
...
...
T2.col14 from T2;
END;
这里T3的十四列的其余部分与第一列id有关系。
每当我调用上述存储过程时,即使我在T1中共有10个id,在T3中的所有记录都会在表T1中插入top 1 id。 经过密切观察,我才知道原因是因为我提到了限制1,所以每次只能获取第一个id。
如果我没有提到限制1,它将返回所有10个id,并且它自己的查询失败。
无论如何我可以得到表T3中的所有ID。请建议我。
在此先感谢。
子查询只允许在这里返回1行。你需要一个返回所有列的连接来插入。 – jarlh 2015-03-02 13:08:36
http://stackoverflow.com/questions/17122128/insert-all-rows-from-table-int-other-table-single-query – Jannik 2015-03-02 13:10:14
hi @jarlh,感谢您的快速回复。请你详细说明一下/详细解释一下。在提供的链接中,数据是从单个表中进行选择的,但这里需要从多个表中选择数据。 – Ram 2015-03-02 13:11:45