比较两个相似但不相同的数据表

本文关键字:数据表 相似 两个 比较 | 更新日期: 2023-09-27 18:02:29

我有两个数据表,它们有一个共同的主键列,但其他结构不同,因为它们是从不同的表创建的。我想检查与数据表A相比,数据表B中缺少哪些行,目的是将缺少的行添加到数据库中。

我看过这样的问题,它提供了很好的答案,但数据表通常被认为是相同的。

因为我想要得到一个新行列表来插入,有没有办法我可以做到这一点,而不遍历这些行并检查PKs?如果我没弄错的话,Merge将保留旧的行,我不想重新提交到数据库。

两个表都只有几十行,最多几百行。无论如何,逐行处理的计算损失可以忽略不计吗?

edit:两个源表在不同的数据库/服务器上,所以我不能轻易地做SQL中的比较。无论如何,我更希望由消费应用程序来完成,因为在完成之前我可能会添加更多的行处理。

比较两个相似但不相同的数据表

我希望我已经正确理解了您的需求,但是如何使用Linq?将2个表的键加载到2个IEnumerable<keytype>对象中,例如(假设键的类型为int)

IEnumerable<int> keys1, keys2;
// code to load the keys into these collections
// to find the keys in keys1 that are missing from keys2:
var missingKeys = keys1.Where(k1 => !keys2.Any(k2 => k2 == k1)); 

HTH

在SQL中这样做是不是更容易/更快,例如:

SELECT col1 FROM table1
MINUS
SELECT col1 FROM table2