如何将行从一个SQL表移动到另一个具有其他列的SQL表?

时间:2013-11-21 18:45:49

标签: sql sql-server-2008

我正在编写一个需要将行从Table0移到Table1的SQL存储过程。 Table1的架构与Table0的架构完全相同,但有一个名为DataIndex的额外INT列除外。要插入到该列中的值是在过程开始时计算的。假设为了讨论它总是100。

我编写了以下SQL来尝试这样做:

INSERT INTO Table1
SELECT *, 100 AS INT_COLUMN_VALUE
FROM Table0;

当我运行此代码时,出现以下错误:无效的对象名称'INT_COLUMN_VALUE'。

我该如何使这项工作?我的数据库正在运行MS SQL Server 2008。

2 个答案:

答案 0 :(得分:0)

我会使用列名来确保数据通过执行类似的操作进入正确的列。

INSERT INTO Table1 (Column1,Column2,Column3,.....Int_Column) --<--- Int Column in destination table
SELECT Column1,Column2,Column3,..... CAST(Col4 AS INT)      --<--- Computed column Cast as int
FROM Table0;

并且您不需要为INT列提供别名,只需确保提及INSERT INTO语句中的所有列,并按照INSERT INTO语句中提到的正确顺序使用列名选择列。

答案 1 :(得分:0)

  • 从代码中删除列名 - INT_COLUMN_VALUE,然后尝试运行它(您可能没有名为INT_COLUMN_VALUE的列)。
  • 您无需在select语句中指定它。
  • 优先选择在insert语句中指定列名。