【问题标题】:How to save select query results within temporary table?如何在临时表中保存选择查询结果?
【发布时间】:2010-12-08 19:27:42
【问题描述】:

我需要将选择查询输出保存到临时表中。然后我需要对这个临时表进行另一个选择查询。有人知道怎么做吗?

我需要在 SQL Server 上进行此操作。

【问题讨论】:

    标签: sql-server sql-server-2005


    【解决方案1】:
    select *
    into #TempTable
    from SomeTale
    
    select *
    from #TempTable
    

    【讨论】:

    • #TempTable前面的#表示它是一个临时表。
    • 这个表什么时候被关闭?
    • #TempTable 在创建它的会话中持续存在。会话关闭后,它就消失了。此外,它只能在同一会话中访问。没有其他会话可以看到和访问它。还有另一种类型的临时表##TempTable(注意##),它具有全局范围。它可以从其他会话中看到和访问,因此##TempTable 是唯一的(没有人可以创建另一个具有相同名称的)。服务器重启,##TempTable 不见了。
    • 每个会话都可以创建自己的#TempTable 而不会遇到名称冲突。
    • 像这样,但我认为更好的是sql select * into temp temptable from sometable; select * from temptable;
    【解决方案2】:

    您还可以执行以下操作:

    CREATE TABLE #TEMPTABLE
    (
        Column1 type1,
        Column2 type2,
        Column3 type3
    )
    
    INSERT INTO #TEMPTABLE
    SELECT ...
    
    SELECT *
    FROM #TEMPTABLE ...
    
    DROP TABLE #TEMPTABLE
    

    【讨论】:

    • 您能否澄清一下,这个临时表真的位于硬盘上,还是只是运行时投影?如果我不删除这个临时表会怎样?
    • 该表位于临时数据库中,仅对创建它的连接可见。一旦该连接消失或存储过程完成,临时表就会消失。
    【解决方案3】:

    Sqlite:

    CREATE TABLE T AS
    SELECT * FROM ...;
    -- Use temporary table `T`
    DROP TABLE T;
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-06
      • 1970-01-01
      • 1970-01-01
      • 2021-11-09
      • 1970-01-01
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      相关资源
      最近更新 更多