我的代码是:
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
是主键)。有没有不同的方法来做到这一点?
答案 0 :(得分:1)
首先,您在语句中使用了两个SQL反模式。修复它们,你的错误很可能会消失。
首先,不要在未指定要插入的列的情况下使用插入。如果人们稍后在表格中切换列,你可以通过这种类型的事情来获得一些难以追踪的错误。
其次,没有理由在生产代码中使用Select *,特别是在插入中。如果有人在此表中添加列或从列中删除列,则代码将中断。
您的问题的一部分可能与表之间的列不匹配有关,或者您有一个无法插入的标识列。