要自动执行Users
数据库的备份过程,我想比较两个表的结构(Users
与ArchivedUsers
)。
我想比较两个表之间的列,以确保存在相同的列,即firebase_id
列之类的列未添加到Users
表而未添加到{{ 1}}表也是。
stackexchange上的用户@RolandoMySQLDBA汇总了一个比较数据库中两个表的查询。
ArchivedUsers
您能想到一个可以比较两个表中的列的查询吗?
答案 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