Sql server 存储过程中的SQL结果集
我目前有两个存储过程,我正试图将它们合并成一个。第一个SP只能从我的数据库返回1条记录 第二个SP返回多条记录(31k+) 目前,我只是使用如下查询将数据插入临时表:Sql server 存储过程中的SQL结果集,sql-server,stored-procedures,Sql Server,Stored Procedures,我目前有两个存储过程,我正试图将它们合并成一个。第一个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 @re
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次相同的数据 如果要从您控制的应用程序中使用存储过程,则可以使用多个活动结果集(MARS)。您需要相应地更新代码和连接字符串。下面的链接解释了这个概念,然后引导您完成实现
不必解释为什么您希望结果集以您所描述的方式输出,并且假设您希望值仅从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)
您使用的是MySql还是SQL Server?SQL Server,抱歉。示例数据和所需结果将非常有用。从您的评论中,听起来像是
union all
可能是您想要的…我曾想过使用union语句,但由于每个临时表中的列数不同,因此抛出了一个错误。