我有 2 个格式完全相同的 sql 表,1 个用作临时表,1 个用作静态表。
目前我的代码只是擦除静态表并每次使用临时表中的新数据填充它,但这并不是我所需要的。我正在尝试创建某种类型的 sql diff 来比较这两个表,然后删除不在临时表中但在静态表中的记录,它会添加临时表中的新记录但是不是静态表。所以静态表只在每次运行时更新,而不是被擦除和重写。
因此,如果我的临时表有:ABC1、ABC2、ABC4,而我的静态表有:ABC1、ABC3、ABC4
理想情况下,我的 sql 查询会返回:ABC1、ABC2、ABC4
我有 2 个查询似乎选择了我要删除的值和我要添加的值,但我目前无法让删除的值正常运行,所以我想知道查询中是否缺少某些内容。
此查询插入临时表中的数据,而不是静态表中的数据:
Insert into [static table]
SELECT *
FROM [temp table]
EXCEPT
SELECT *
FROM [static table]
此查询应删除静态表中的数据,而不是临时表中的数据:
delete from [static table]
where not exists
(SELECT *
FROM [static table]
EXCEPT
SELECT *
FROM [temp table] )
谁能建议我的查询有什么问题,或者是否有更好的方法来执行此任务?谢谢