返回多个结果集并使用结果集1过滤结果集2

时间:2014-01-07 22:43:33

标签: sql sql-server-2008 variables temp-tables multiple-resultsets

/* result 1 */
 select Id, Name
 from Items


/* result 2 */
 select Id,
        Alias
 from ItemAliases
 where Id in (
     select Id, Name
     from table abc
 )

我们使用SQL Server 2008。

使用上面的例子,我应该非常简单。

我需要返回查询1的结果...并返回查询2的结果。

但是,查询2需要过滤以仅包含结果1中的记录。

这是我尝试展示我最终想要的内容。

VAR A = (
   select Id, Name
   from Items
)

/* result 1 */
 select A.*

/* result 2 */
 select Id,
        Alias
 from ItemAliases
 where Id in ( A.Id )

2 个答案:

答案 0 :(得分:1)

我认为您只想存储Result1并使用它来构成Result2:

declare @Result1 table (Id int primary key, Name varchar(100));

insert into @Result1
    -- store Result1
    select Id, Name
    from Items

--return Result1
select Id, Name 
from @Result1;


--return Result2 using stored Result1
select Id,
    Alias
from ItemAliases
where Id in (select Id from @Result1);

答案 1 :(得分:0)

--Result 1
SELECT  ID, Name
FROM    Items
[You WHERE Clause here if any]

--Result 2
SELECT Id, Alias
 FROM ItemAliases ia
        INNER JOIN Items i ON ia.ID = i.ID

OR

--Using temporay in memory table
DECLARE @abc AS TABLE (
ID AS Int,
Name AS varchar(25)
)

SELECT  ID, Name
INTO    @abc
FROM    Items
[You WHERE Clause here if any]

--Result 1
SELECT * FROM @abc

--Result 2
SELECT Id, Alias
 FROM ItemAliases ia
        INNER JOIN @abc i ON ia.ID = i.ID