【问题标题】:How do I convert/save the query results in into a table如何将查询结果转换/保存到表中
【发布时间】:2020-08-26 11:45:48
【问题描述】:

请你帮帮我。我需要将这个内连接查询的结果保存到一个表中。

select *
from [dbo].[List of 7671 Zim Acquittals Used By EY] inner join
     [dbo].[Zim Phase 3 - Combo of Phases 1 - 3 _ 6 Aug For SQL Master]
     on [dbo].[List of 7671 Zim Acquittals Used By EY].[Ref1]=[dbo].[Zim Phase 3 - Combo of Phases 1 - 3 _ 6 Aug For SQL Master].[Ref1]

谢谢克里斯

【问题讨论】:

  • 提示:SELECT INTO.
  • 我真的建议您在这里重新考虑为您的对象选择的名称。另外,我强烈建议您使用别名,而不是为您的列使用 3 部分命名。后者是 SQL Server 中的due to be deprecated,前者会让你的代码简洁很多(尤其是那些对象名)。

标签: sql sql-server


【解决方案1】:

您可以使用SELECT INTO statement.SELECT INTO statement 将数据从一个表复制到一个新表中。

以下 SQL 语句将数据从多个表复制到一个新表中:

select *
into [dbo].[Table_name]
from [dbo].[List of 7671 Zim Acquittals Used By EY] inner join [dbo].[Zim Phase 3 - Combo of Phases 1 - 3 _ 6 Aug For SQL Master] on [dbo].[List of 7671 Zim Acquittals Used By EY].[Ref1]=[dbo].[Zim Phase 3 - Combo of Phases 1 - 3 _ 6 Aug For SQL Master].[Ref1]

或者您可以使用其他变体:INSERT INTO Statement.
INSERT INTO SELECT 语句从一个表中复制数据并将其插入到另一个表中。

INSERT INTO SELECT 要求源表和目标表中的数据类型匹配。 但首先你需要创建表,例如:

CREATE TABLE Table_Name(
    Field1 <type>, 
    Field2<type>,
    Field3 <type>
) 

之后,您可以使用以下查询:

  INSERT INTO Table_name (Field1,Field2, Field3) 
  SELECT * from [dbo].[List of 7671 Zim Acquittals Used By EY] inner join [dbo].[Zim Phase 3 - Combo of Phases 1 - 3 _ 6 Aug For SQL Master on [dbo].[List of 7671 Zim Acquittals Used By EY].[Ref1]=[dbo].[Zim Phase 3 - Combo of 1 - 3 _ 6 Aug For SQL Master].[Ref1]

【讨论】:

    【解决方案2】:

    试试这个,

    select *
    into [dbo].[NewTable]
    from [dbo].[List of 7671 Zim Acquittals Used By EY] inner join
    [dbo].[Zim Phase 3 - Combo of Phases 1 - 3 _ 6 Aug For SQL Master]
    on [dbo].[List of 7671 Zim Acquittals Used By EY].[Ref1]=[dbo].[Zim Phase 3 - Combo of Phases 1 - 3 _ 6 Aug For SQL Master].[Ref1]
    

    【讨论】:

    • 不客气,您可以点击答案左侧的向上箭头按钮。
    【解决方案3】:

    在 Oracle 中,您可以使用 CTAS,即如果只需要复制表结构

    Create table as select * from tablename
    where 1 = 2;
    

    在 SQL Server 中 CTAS 不可用,因此您必须使用

    SELECT * INTO NEW_TABLE FROM EXISTING_TABLE WHERE 1 = 2;
    

    你可以参考这个post

    【讨论】:

      【解决方案4】:

      要插入临时表,请使用以下查询

      select * into #temp from  (Your Query)
      

      要插入物理表,请创建具有所需列的表:

      INSERT INTO Tablename
      SELECT Columnnames FROM TABLE NAME;
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2014-05-06
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-31
        • 1970-01-01
        相关资源
        最近更新 更多