我正在编写一个需要将行从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。
答案 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
的列)。