Sql server C SQL命令查询产生“无法绑定”错误

Sql server C SQL命令查询产生“无法绑定”错误,sql-server,Sql Server,我的场景是:主表包含数百万条记录。主键是时间戳。现在我需要将从.csv导入的数据添加到数据表中。Datatable中的某些行可能已经包含特定的时间戳,而这些行不应该包含,因为主键是Timestamp,所以不能插入到主表中 因此,我创建了一个临时表,并从Datatable复制到其中。然后,我使用以下命令将新行从临时表插入主表。新的是临时表中的所有时间戳在主表中尚不存在的人: INSERT INTO Master SELECT * FROM Temp WHERE NOT EXISTS (SELECT

我的场景是:主表包含数百万条记录。主键是时间戳。现在我需要将从.csv导入的数据添加到数据表中。Datatable中的某些行可能已经包含特定的时间戳,而这些行不应该包含,因为主键是Timestamp,所以不能插入到主表中

因此,我创建了一个临时表,并从Datatable复制到其中。然后,我使用以下命令将新行从临时表插入主表。新的是临时表中的所有时间戳在主表中尚不存在的人:

INSERT INTO Master
SELECT *
FROM Temp
WHERE NOT EXISTS (SELECT Timestamp FROM Temp WHERE Master.Timestamp = Temp.Timestamp)
得到这个例外:

多部分标识符主机。无法绑定时间戳


我似乎不知道如何修改INSERT语句来完成它需要做的事情。如果有任何帮助,我们将不胜感激。

您的逻辑是颠倒的。子查询应该从主查询中选择,而不是从临时查询中选择。例如:

SELECT * FROM Temp as tmp
WHERE NOT EXISTS (SELECT * FROM Master as mst 
    WHERE mst.Timestamp = tmp.Timestamp);

你的逻辑倒过来了。子查询应该从主查询中选择,而不是从临时查询中选择。例如:

SELECT * FROM Temp as tmp
WHERE NOT EXISTS (SELECT * FROM Master as mst 
    WHERE mst.Timestamp = tmp.Timestamp);

找不到,未绑定。我敢打赌主表不包含名为Timestamp的列。顺便说一句,使用Master作为名称是个坏主意,因为SQLServer已经有了Masterdatabase@PanagiotisKanavos奇怪的是,错误消息正确地说是bound,not found,这是找不到对象时显示的消息。。。我仅在引用的示例中将名称更改为Master。找不到,未绑定。我敢打赌主表不包含名为Timestamp的列。顺便说一句,使用Master作为名称是个坏主意,因为SQLServer已经有了Masterdatabase@PanagiotisKanavos奇怪的是,错误消息正确地说是bound,not found,这是找不到对象时显示的消息。。。我仅在引用的示例中将名称更改为Master。