0
/* 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 )
4

2 回答 2

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);
于 2014-01-08T00:03:28.547 回答
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

或者

--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
于 2014-01-08T00:04:04.203 回答