我在同一个数据库中有两个彼此相同的表,一个是临时的'持有'上传数据的表格,另一个是存储永久数据的实时数据表。
这样做的原因是两个表相互比较,以查看最初的值和新更新的值的变化。
我的问题是,一旦比较阶段完成并且用户提交上传,我如何将数据从临时表复制到现有表格,在那里它将插入一个新记录,在该表格中不存在现有表格,如果它已经存在于永久表格中(使用MonthID
和yearID
),那么它应该只有UPDATE
,因此没有任何重复项。< / p>
所以我希望通过查看另一个表中是否已存在YearID
和MonthID
来检查记录是否存在。请记住,两个表都是相同的。
以下是一些示例数据:
表1
SpendID Spend MonthNo YearID ChangedBy
47 1444.19 2 4 12
表2
SpendID Spend MonthNo YearID ChangedBy
1 1500.54 2 4 12
抱歉,希望这是有道理的。
我已尝试查看UPDATE
和MERGE
,但它们似乎使用了我无法在此处使用的主要识别码。
因为我一直在努力,只需要一个外界的意见来帮助解决这个问题。
答案 0 :(得分:2)
您可以使用以下命令进行SQLITE:delete-delete,insert,select !!!
答案 1 :(得分:0)
您可以使用MERGE
或INSERT
+ UPDATE
组合执行此操作。我更喜欢后者。
-- Add missing records
INSERT INTO [Table 1] (SpendID, Spend, MonthNo, YearID, ChangedBy)
SELECT
SpendID
, Spend
, MonthNo
, YearID
, ChangedBy
FROM [Table 2] t2
WHERE NOT EXISTS (SELECT 1
FROM [Table 1] t1
WHERE t1.MonthNo = t2.MonthNo
AND t1.YearID = t2.YearID)
-- Update existing records
UPDATE t1
SET t1.Spend = t2.Spend
FROM [Table 1] t1
INNER JOIN [Table 2] t2
ON t1.MonthNo = t2.MonthNo
AND t1.YearID = t2.YearID
我之所以比MERGE
更喜欢这个原因,是因为MERGE
可能会在某些情况下导致性能问题。网上有很多文章,但我发布了a link to an article that exposes one problem with MERGE
,还提供了一些与MERGE
报告问题的Connect项目at the bottom of the article。