比较两个MYSQL表之间的列

时间:2017-05-19 19:14:39

标签: mysql

要自动执行Users数据库的备份过程,我想比较两个表的结构(UsersArchivedUsers)。

我想比较两个表之间的列,以确保存在相同的列,即firebase_id列之类的列未添加到Users表而未添加到{{ 1}}表也是。

stackexchange上的用户@RolandoMySQLDBA汇总了一个比较数据库中两个表的查询。

ArchivedUsers

您能想到一个可以比较两个表中的列的查询吗?

1 个答案:

答案 0 :(得分:1)

有几种方法可以做到这一点,但对于MySQL我建议:

SELECT MIN(TableName) as TableName, ID, COL1, COL2, COL3 ...
FROM
(
  SELECT 'Table A' as TableName, A.ID, A.COL1, A.COL2, A.COL3, ...
  FROM A
  UNION ALL
  SELECT 'Table B' as TableName, B.ID, B.COL1, B.COl2, B.COL3, ...
  FROM B
) tmp
GROUP BY ID, COL1, COL2, COL3 ...
HAVING COUNT(*) = 1
ORDER BY ID

此查询来自Jeff Smith(here

的博客

这种方法的优点是你可以知道哪个表有不同的行

这个主题的早期SO问题在这里显示了其他方法,特别是对于支持EXCEPT或MINUS的DBMS平台: SQL compare data from two tables