gpt4 book ai didi

mysql - 比较两个 MYSQL 表之间的列

转载 作者:行者123 更新时间:2023-11-29 10:49:02 24 4
gpt4 key购买 nike

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

我想比较两个表之间的列,以确保存在相同的列,即像 firebase_id 这样的列不会添加到 Users 表中,除非也被添加到 ArchivedUsers 表中。

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

SELECT IF(COUNT(1)>0,'Differences','No Differences') Comparison FROM
(
SELECT
column_name,ordinal_position,
data_type,column_type,COUNT(1) rowcount
FROM information_schema.columns
WHERE table_schema=DATABASE()
AND table_name IN ('users','archived_users')
GROUP BY
column_name,ordinal_position,
data_type,column_type
HAVING COUNT(1)=1
) A;

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

最佳答案

有几种方法可以做到这一点,但对于 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

关于mysql - 比较两个 MYSQL 表之间的列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44077482/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com