如何识别两个mysql表中哪些行不同

时间:2017-12-12 19:10:44

标签: mysql linux

我在SQL中有两个类似的mysql表,我想确定哪些行是不同的。有人可以帮我解决问题吗?...谢谢

1 个答案:

答案 0 :(得分:0)

我希望每个记录或每个记录的唯一键都有主键,其他字段可能不同。因此,您可以检查哪些记录不相同。

select A.<Primary_key/Unique_key>, A.<rest of the columns>, B.<rest_of the columns> from Table A , Table B where A.<primary_key/Unique_key)>=B.<Primary_key/unique_key> and concat(A.field2,'|',A.field3,'|',A.field4) <> concat(B.field2,'|',B.field3,'|',B.field4);

很容易连接并同时比较所有字段,或者您可以按如下方式分别比较每个字段:

select A.<Primary_key/Unique_key>, A.Field2,A.Field3,A.Field4, B.Field2,B.Field3,B.Field4 from Table A , Table B where A.<primary_key/Unique_key)>=B.<Primary_key/unique_key> and ( A.Field2 <> B.Field2 OR A.Field3 <> B.Field3 OR A.Field4 <> B.Field4 );

我希望这会有所帮助。

这是工具:https://www.red-gate.com/products/mysql/mysql-data-compare/index - 这将比较对象和数据。

另一个:https://github.com/DBDiff/DBDiff