Mysql 比较具有匹配ID的行,以确定两个不同表之间每行中的哪些行和哪些字段不同

Mysql 比较具有匹配ID的行,以确定两个不同表之间每行中的哪些行和哪些字段不同,mysql,sql,Mysql,Sql,我正在帮助从遗留数据库迁移,并且需要识别自上次转储遗留数据库以来所做的更改 这个表(不是开玩笑)有几百列,但只有几千行。我要做的是比较表_old中的行和表_new中的行,在thing _id上进行匹配,然后对于任何字段中包含不同值的每一行,返回thing _id和列名称以获取差异 我的问题是,答案类似于并面向比较两个表之间的特定字段,而我希望比较所有字段 这对mysql来说是不是太远了?我尝试过navicat之类的工具,虽然它会显示模式差异和同步数据差异,并显示哪些行包含数据差异,但它不会识别给

我正在帮助从遗留数据库迁移,并且需要识别自上次转储遗留数据库以来所做的更改

这个表(不是开玩笑)有几百列,但只有几千行。我要做的是比较表_old中的行和表_new中的行,在thing _id上进行匹配,然后对于任何字段中包含不同值的每一行,返回thing _id和列名称以获取差异

我的问题是,答案类似于并面向比较两个表之间的特定字段,而我希望比较所有字段

这对mysql来说是不是太远了?我尝试过navicat之类的工具,虽然它会显示模式差异和同步数据差异,并显示哪些行包含数据差异,但它不会识别给定行中哪些列存在差异


注意:新表比旧表多37行。表模式是相同的,当然列名也是相同的。

这并不能用简洁的SQL解决方案解决您的问题,但是我想,如果您不希望有巨大的差异,那么最好的办法可能是将数据提取为按对象id排序的csv,并在文本比较工具中进行比较(beyond compare,winmerge,notepad++compare插件)。这将很快告诉您至少哪些行(或多少行)存在差异。我会关注这个问题,但万一有人提出更优雅的解决方案,因为我经常需要这样的解决方案:)嗯,这可能是最好的解决方案。。。