单变量sql中的多行
我有以下返回多行的sql:单变量sql中的多行,sql,variables,subquery,Sql,Variables,Subquery,我有以下返回多行的sql: declare @blabla select id from table where @blabla = blabla and blabla is blabla 它返回几个ID,如下所示: 现在,稍后讨论我的存储过程。我需要从那个查询中得到结果。我还有一个类似这样的问题: select column from table where blabla IN (that 1st query) declare @query nvarchar(max) set @quer
declare @blabla
select id from table where @blabla = blabla and blabla is blabla
它返回几个ID,如下所示:
现在,稍后讨论我的存储过程。我需要从那个查询中得到结果。我还有一个类似这样的问题:
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)
所以我的解决方案是将上面的第一个查询放在一个变量中,然后执行它。所以我是这样做的:
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只返回了一行
这是执行第一个查询时的最后一行
我希望@result包含几个ID,而不仅仅是最后一个ID。我该怎么做?我的剧本怎么了
如果您能提供任何帮助,我们将不胜感激
谢谢 问题在于您在此处分配变量@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);
你要找的是临时表
SELECT id INTO #TEMP FROM table WHERE ...
然后你可以继续做下去
SELECT * FROM #TEMP