【问题标题】:"select * into table" Will it work for inserting data into existing table“select * into table” 将数据插入现有表是否有效
【发布时间】:2010-04-22 04:37:56
【问题描述】:

我正在尝试将数据从我的一个现有表插入到另一个现有表中。

是否可以使用select * into 查询将数据插入到任何现有表中。 我认为可以使用联合来完成,但在这种情况下,我需要将现有表的所有数据记录到临时表中,然后删除该表,最后应用联合将所有记录插入同一个表中

例如。

select * into #tblExisting from tblExisting
drop table tblExisting
select * into tblExisting from #tblExisting union tblActualData

这里的 tblExisting 是我真正想要存储所有数据的表 tblActualData 是将数据附加到 tblExisting 的表。

方法对吗。 我们还有其他选择吗?

【问题讨论】:

标签: sql sql-server database sql-server-2005 tsql


【解决方案1】:

你应该试试

INSERT INTO ExistingTable (Columns,..)
SELECT Columns,...
FROM OtherTable

看看INSERT

SQL SERVER – Insert Data From One Table to Another Table – INSERT INTO SELECT – SELECT INTO TABLE

【讨论】:

  • 您可以通过使用 * 选择所有列来做到这一点吗? INSERT INTO ExistingTable (*) SELECT * FROM OtherTable
【解决方案2】:

不,您不能使用SELECT INTO 将数据插入到现有表中。

documentation 说明了这一点:

SELECT...INTO 在默认文件组中创建一个新表,并将查询的结果行插入其中。

您通常希望避免在生产环境中使用SELECT INTO,因为它使您无法控制表的创建方式,并且可能导致各种令人讨厌的锁定和其他性能问题。您应该显式创建模式并使用INSERT - 即使是临时表。

【讨论】:

    【解决方案3】:

    @瑞恩蔡斯 您可以通过使用 * 选择所有列来做到这一点吗? 是的!

    INSERT INTO yourtable2 SELECT * FROM yourtable1

    【讨论】:

    【解决方案4】:
    猜你喜欢
    • 2020-07-06
    • 2023-02-09
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2020-02-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多