"无效的列名" -error在Insert-Select上有WHERE NOT EXISTS

时间:2016-02-03 14:43:32

标签: sql-server sql-server-2000

我的代码是:

INSERT INTO table_1 
SELECT *
FROM table_2 S
WHERE NOT EXISTS (SELECT column1
                  FROM table_1 T
                  WHERE T.column1 = S.column1)

当我运行这个脚本时,我得到一个

  

无效的列名column1

在第一行,即使每个表都存在该列。

我试图从另一个表中插入一个表,它们具有不同的column1值(column1是主键)。有没有不同的方法来做到这一点?

1 个答案:

答案 0 :(得分:1)

首先,您在语句中使用了两个SQL反模式。修复它们,你的错误很可能会消失。

首先,不要在未指定要插入的列的情况下使用插入。如果人们稍后在表格中切换列,你可以通过这种类型的事情来获得一些难以追踪的错误。

其次,没有理由在生产代码中使用Select *,特别是在插入中。如果有人在此表中添加列或从列中删除列,则代码将中断。

您的问题的一部分可能与表之间的列不匹配有关,或者您有一个无法插入的标识列。