2013-04-15 15 views
0

几行,我有以下SQL返回几行:在单个变量SQL

declare @blabla 
select id from table where @blabla = blabla and blabla is blabla 

它返回多个ID,如下面:

enter image description here

现在,后来在我的存储过程。我需要从那个查询中得到结果。所以我有这样的另一个查询:

select column from table where blabla IN (that 1st query) 

所以我的解决方案是把第一个查询上面的变量然后执行它。所以我做的是这样的:

declare @query nvarchar(max) 
set @query= 
' 
declare @blabla 
select @body = id from table where @blabla = blabla and blabla is blabla 
' 

declare @result as nvarchar(max) 
exec sp_executesql @query, N'@body varchar(max) output', @body = @result output 


select column from table where blabla IN (@result) 

但是@result上面只返回了一行。

enter image description here

执行我的第一次查询时,这是最后一排。

我希望我的@result包含几个ID,而不仅仅是最后一个。我怎样才能做到这一点?我的脚本有什么问题?

任何援助,你可以提供将不胜感激。

谢谢!

回答

1

的问题是你在这里分配变量@Body方式:

select @body = id 
from table 
where @blabla = blabla and blabla is blabla 

这只会给@body最后一个ID值遇到(根据结果的顺序)。

为了做到你是什么后,你可以使用一个表变量:

DECLARE @Result TABLE (ID INT); 
INSERT @Result (ID) 
SELECT ID 
FROM Table 
WHERE @Blabla = blabla; 


SELECT column 
FROM table 
WHERE ID IN (SELECT ID FROM @Result); 
0

你所寻找的是一个临时表。

SELECT id INTO #TEMP FROM table WHERE ... 

然后,您可以继续做

SELECT * FROM #TEMP