拥有一个特定的唯一键字段肯定是最简单的 - 但您仍然可以通过简单地使用组合字段作为唯一键来完成它(基本上是创建自己的键)。
然后您可以通过将新表链接到旧表来进行更新,在您指定应构成唯一键的字段上。
假设您有一个“Employees”表和一个“Employees New”表。您希望员工的姓名和徽章编号构成唯一键。这将是添加旧员工表中不存在的任何记录的 SQL。
INSERT INTO [Employees]
( FIELD1,
EMPLOYEENAME,
BADGENUMBER,
FIELD2,
FIELD3,
FIELD4 )
SELECT NEW.FIELD1,
NEW.EMPLOYEENAME,
NEW.BADGENUMBER,
NEW.FIELD2,
NEW.FIELD3,
NEW.FIELD4
FROM [Employees New] AS NEW
LEFT JOIN [Employees] AS OLD
ON (NEW.EMPLOYEENAME = OLD.EMPLOYEENAME) AND
(NEW.BADGENUMBER = OLD.BADGENUMBER)
WHERE (OLD.EMPLOYEENAME Is Null);
这通过使用确定构成主键的字段将“Employees”表与“Employees New”链接起来。它将结果限制为仅显示新员工不在旧员工表中的那些记录。
下一个决定是决定是否要使用新表中的值更新 Employee 表中的现有记录。如果是这样,你会使用这样的方法。
UPDATE [Employees] AS OLD
INNER JOIN [Employees New] AS NEW
ON (OLD.BADGENUMBER = NEW.BADGENUMBER) AND
(OLD.EMPLOYEENAME = NEW.EMPLOYEENAME)
SET OLD.Field1 = NEW.Field1,
OLD.Field2 = NEW.Field2,
OLD.Field3 = NEW.Field3,
OLD.Field4 = NEW.Field4;
这通过连接“Employees”和“Employees New”表来工作,只显示两个表中唯一键字段匹配的记录。然后我们更新所有字段。
希望这能让你朝着正确的方向前进。