Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql server 存储过程中的SQL结果集_Sql Server_Stored Procedures - Fatal编程技术网

Sql server 存储过程中的SQL结果集

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

我目前有两个存储过程,我正试图将它们合并成一个。第一个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次相同的数据

如果要从您控制的应用程序中使用存储过程,则可以使用多个活动结果集(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语句,但由于每个临时表中的列数不同,因此抛出了一个错误。