我目前有2个存储过程,我正在尝试将其合并为1.第一个SP应该只返回来自我的数据库的1条记录。
第二个SP返回许多记录(31k +)。
目前我只是将我的数据插入到临时表中,其中包含以下查询:
insert @Results3
select r2.d_key
select r1.name
select r1.comments
select r1.time
select r1.more select statements....
from (select distinct * from @results1) as r1, (select * from @results2) as r2
这样可以获取我的数据,但R1表中的数据只会返回1个结果。但是,我的查询将为我的R2表中的每条记录返回相同的结果。
基本上所需的结果是:
d_key, name, comments, time
1, test_name, 'some comment', 10:00:00
2, null, null, null
3, null, null, null
4, null, null, null
等。
而不是:
d_key, name, comments, time
1, test_name, 'some comment', 10:00:00
2, test_name, 'some comment', 10:00:00
3, test_name, 'some comment', 10:00:00
4, test_name, 'some comment', 10:00:00
有更好的方法吗?我宁愿不能获得相同数据31k次我不需要。
答案 0 :(得分:1)
如果要从您控制的应用程序中使用存储过程,则可以使用多个活动结果集(MARS)。您需要相应地更新代码和连接字符串。下面的链接解释了这个概念,然后引导您完成实施。
https://msdn.microsoft.com/en-us/library/ms131686(v=sql.120).aspx
答案 1 :(得分:0)
如果没有按照你所描述的方式想要结果集输出的原因,并假设你希望r1的值只输出到第一行,那么这个查询应该完成这项工作:
insert @Results3
select r2.d_key,
r1.*
from (select * from @results2) r2
left outer join (select * from @results1) r1
on r2.d_key = (select min(d_key) from results2)