这是一个例子,假设我有两个数据表。
Table_1
id name age
===================
1 john 20
2 henry 25
3 sam 18
4 tom 30
Table_2
id name age
===================
1 john 20
2 henry 26 <=== Edited Row
3 sam 19 <=== Edited Row
4 tom 30
这两个表在diffenrence数据库中(具有相同的模式)
我将它们加载到两个DataTable中,并使用Except
类似
dt_Table_1.AsEnumerable().Except(dt_Table_2.AsEnumerable())
使用Except
仅返回新插入的行但不返回已编辑的行
我只是想获得编辑行
上面的表格只是示例,我的实际数据有很多行,所以我必须考虑性能。这就是为什么我不想为每一行进行循环。
有没有更好的方法呢?
答案 0 :(得分:0)
您可以简单地构造一个查询,该查询将为您提供已更改的行:
$ wget http://compling.hss.ntu.edu.sg/omw/wns/eng.zip
$ unzip eng.zip
$ cut -f3 eng/wn-data-eng.tab | (read;cat)
但是,如果您添加或删除行,它们将不会显示,您可以运行
select * from table_1 inner join table_2 on table_1.id=table_2.id and table_1.age<>table_2.age
要从table_1和
中删除所有内容select * from table_1 where id not in (select id from table_2)
从表_2中删除行
您可以将它们全部合并到一个查询中,并通过运行以下内容来设置状态(已删除或已编辑):
select * from table_2 where id not in (select id from table_1)