【问题标题】:How to insert into a table from temp table?如何从临时表插入表?
【发布时间】:2015-09-02 10:24:05
【问题描述】:

我已经在一个临时表中有值,我想将它插入到我的表中。

我遵循这个语法

IF NOT EXISTS (SELECT 1 FROM ABC abc JOIN #Temp t ON abc.ID = t.ID)

insert into MyTable(Id,Name)
select values (t.ID, t.Name)
From t

我只有名称 t 作为我在此插入之前在条件中创建的别名。

这是正确的吗?有些人使用@等。我很困惑。

【问题讨论】:

标签: sql sql-server sql-server-2008 temp-tables


【解决方案1】:

正确的语法:

insert into MyTable(Id,Name)
select t.ID, t.Name
From #temp t

总是read manual

【讨论】:

  • 谢谢,我总是看到有些人使用@,他们在第一个字段中使用@,其余的只是字段名称,在您的查询中,您在最后一个字段中使用 t 而不是在第一个字段中?迷茫..
  • 这里每个人的答案都不一样:(我很困惑
  • @Deevinee 你不能使用别处定义的别名,别名总是在一条当前指令中工作,所以你需要insert into MyTable(Id,Name) select ID, t.Name From #temp t
  • 谢谢,还有关于 t 在 Name 而不是 ID 的问题?
  • @Deevinee 你想要参数中的 ID 吗?喜欢insert into MyTable(Id,Name) select @ID, t.Name From #temp t
【解决方案2】:

你可以检查一下

insert into Table1(Id,Name) 
select ID,Name
From t

【讨论】:

    【解决方案3】:

    插入表名(column_name1,column_name2,column_name3) (选择 temp_table_col1_1、temp_table_col1_1、temp_table_col1_1 从 temp_table_name )

    【讨论】:

      【解决方案4】:

      试试这个

      INSERT INTO Table1(Id, Name)
      SELECT t.ID, t.Name FROM t
      

      【讨论】:

        【解决方案5】:

        请尝试以下代码 sn-p。

        IF NOT EXISTS (SELECT 1 FROM ABC abc JOIN #Temp t ON abc.ID = t.ID)
        
            insert into MyTable(Id,Name) select t.ID, t.Name From #Temp t
        

        临时表

        CREATE TABLE #Temp1 ( Name VARCHAR(MAX) )
        

        全局临时表

        CREATE TABLE ##Temp1 ( Name VARCHAR(MAX) )
        

        表变量

        DECLARE @Temp1 TABLE( Name VARCHAR(MAX) ) 
        

        在 SQL Server 中,对于临时表,我们使用“#”,对于表变量,我们使用“@”。 有关临时表和表变量的更多详细信息,请查看this。

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 2012-08-19
          • 1970-01-01
          • 2018-04-07
          • 2019-07-26
          • 2011-02-05
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多