2015-12-14 289 views
1

我目前有2個存儲過程,我試圖將它們合併爲1.第一個SP應該只從我的數據庫返回1條記錄。存儲過程中的SQL結果集

第二個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

您使用的是MySql還是SQL Server? –

+0

SQL Server,道歉。 – jackfrost5234

+0

樣本數據和期望的結果將會有所幫助。從你的評論,這聽起來像'union all''可能是你想要的...... – sgeddes

回答

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)