【问题标题】:Return multiple result sets AND use result set 1 to filter result set 2返回多个结果集并使用结果集 1 过滤结果集 2
【发布时间】:2014-01-07 22:43:32
【问题描述】:
/* 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 )

【问题讨论】:

  • @peter.petrov SQL Server 2008
  • 不清楚,请添加示例数据和想要的结果。
  • @fancyPants 我已对其进行了更新以删除多余的措辞并尝试澄清一下。

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


【解决方案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);

【讨论】:

    【解决方案2】:
    --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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-04-22
      • 1970-01-01
      相关资源
      最近更新 更多