2 个数据表进行全量比较
业务中,有 2 个数据表,结构一样。有主键,名称为 id。
如果要使用 merge 的方法,需要结果集有序。
merge 如果指定了 x 参数则按照成员的 x 值来对成员做比较,如果省略了 x 参数则用 ~.v() 值来对成员做比较。
业务中,需要多所有字段进行比较,以分析出这条记录是否有 update。
问题:
1、对原始数据集进行所有字段比较的时候,要对所有字段都进行预先排序吗?
如
A1.query(“select * from employee1 order by id,name,age,sex..”
A2.query(“select * from employee2 order by id,name,age,sex..”
是否可以只保证 id 主键字段有序,然后进行所有字段进行比较,这样就会简化比较的写的方法。
2、在比较的时候,对记录都是比较它所有字段相互连接之后的 hash 值吗?
3、如果要做一个通用的 2 个表进行比较的功能,只有传入 2 个表名。就得到比较结果,有什么思路?
merge 有个 @o 选项,可以不用有序
回答:
1、对主键 id 排序就行
2、join@f 是比较 hash 值;归并时(join@mf)比较数值,不再 hash 值
3、oracle 为例:
字段名
主键
参考 SPL 实践:异构库的数据比对