【问题标题】:Create Microsoft SQL Temp Tables (without declaring columns – like Informix)?创建 Microsoft SQL 临时表(不声明列——如 Informix)?
【发布时间】:2013-12-02 03:26:32
【问题描述】:

我最近换了职位,来自 Informix 数据库环境,我可以在其中使用 SQL 语句选择一个或多个列......并将输出定向到临时表。在 Informix 中,对于临时表,我既不需要声明列名,也不需要声明列长度(只有临时表的名称)——我可以简单地写:

从 [columnname1, columnname2, columnname3 ..] 中选择 [database.tablename] where...等进入没有日志的临时表名1;

请注意,在 Informix 中,临时表默认存储列名...以及数据类型 [通过存储在临时表中的数据类型]。所以,如果上面的语句被执行,那么开发者可以只写:

从tablename1中选择columname1、columnname2等

根据我的经验,我发现这种方法非常有用 - 出于多种原因(“切片/切块”数据、使用各种数据源等)......而且非常快速和高效。

但是,现在我使用的是 Microsoft SQL Server,我还没有找到一种方法(还)做同样的事情。在 SQL Server 中,我必须声明每一列,以及它的长度

创建表 #tablename1 ( column1 numeric(13,0) );

insert into #tablename1(column1) select [column] from [database.tablename] 在哪里……

[然后根据需要使用信息]:

从#tablename1中选择* [然后做一些事情...]

删除表#tablename1

有谁知道我如何在 Microsoft SQL Server 中执行此操作和/或设置此功能?我查看了匿名表(即 Table-Value 构造函数:http://technet.microsoft.com/en-us/library/dd776382.aspx)......但指南指出声明列仍然是必要的。

提前感谢 - jrd

【问题讨论】:

    标签: sql sql-server


    【解决方案1】:

    语法是:

    select [columnname1], [columnname2], [columnname3]  into tablename1 from [database].[schema].[tablename] where... 
    

    如果您希望表是临时的,请在 tablename1 前加上 # 前缀

    【讨论】:

      【解决方案2】:

      需要注意的是,虽然你可以使用下面的语法:

      SELECT col1, col2...
      INTO #tempTable1
      FROM TABLEA
      

      您还应该为计算的列命名。 这样你得到:

      SELECT col1, col2...,AVG(col9) AS avgCol9
      INTO #tempTable1
      FROM TABLEA
      

      【讨论】:

        【解决方案3】:

        在sql server中非常简单,你所要做的就是

        SELECT Column1, Column2, Column3,......  INTO #Temp
        FROM Table_Name 
        

        此语句将创建一个临时表,将数据和数据类型全部复制到临时表中。 # 符号使该表成为临时表,您也可以使用相同的语法创建表,但没有 # 符号,类似这样

        SELECT Column1, Column2, Column3,......  INTO New_Table_Name
        FROM Table_Name 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-04-08
          • 1970-01-01
          • 1970-01-01
          • 2019-03-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多