我有两个数据表,它们有一个共同的主键列,但是不同的结构,因为它们是从不同的表创建的。我想检查数据表B中与A相比缺少哪些行,目的是将缺少的行添加到数据库中。
我已经看过像this one这样的问题,这些问题提供了很好的答案,但数据表通常被认为是相同的。
由于我想获取一个用于插入的新行列表,有没有办法可以在不迭代行并检查PK的情况下执行此操作?如果我没有弄错的话,Merge
将保留旧行,我不想重新提交到数据库。
这两个表只有几十行,最多几百行。无论如何,逐行进行计算的命中率是否可以忽略不计?
编辑:这两个源表位于不同的数据库/服务器上,所以我不能轻易做到 SQL中的比较。无论如何,我更喜欢消费应用程序,因为我可能在完成之前添加更多行处理。
答案 0 :(得分:1)
我希望我能正确理解你的需求,但是如何使用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
答案 1 :(得分:0)
在SQL中执行此操作是否更容易/更快,例如:
SELECT col1 FROM table1
MINUS
SELECT col1 FROM table2