gpt4 book ai didi

mysql - 比较同一 MySQL 数据库表的两个版本的数据

转载 作者:行者123 更新时间:2023-11-29 21:14:43 25 4
gpt4 key购买 nike

我有两个 MySQL 表,它们具有完全相同的结构和大部分相同的数据。两者之间的某些行会有所不同,因为我的客户更新了旧网站而不是新网站。有数百条记录,并且没有最后修改日期的列。我在本地主机上创建了一个新数据库并导入了旧表和新表。所有数据行都需要进行比较,并且需要返回新旧数据库之间的差异。一旦识别出差异,是否有一种方法可以轻松地将更新的数据从旧表迁移到新表?我是 MySQL 新手,但我通常可以解决问题。预先感谢您的帮助。

我一直在查看以下代码,但我不确定它是否是最佳答案。

SELECT *,'table_1' AS o FROM table_1
UNION
SELECT *,'table_2' AS o FROM table_2
WHERE some_id IN (
SELECT some_id
FROM (
SELECT * FROM table_1
UNION
SELECT * FROM table_2
) AS x
GROUP BY some_id
HAVING COUNT(*) > 1
)
ORDER BY some_id, o;

最佳答案

这应该可以解决问题。您正在查找所有行的主键,其中在 where 子句中使用的子查询中两个表中的每个值都相同。然后,您可以从联合结果集中排除具有这些主键的行。现在你如何去协调差异是一个完全不同的故事了:)

SELECT * FROM (
SELECT *, 'table 1' FROM table_1
UNION ALL
SELECT *, 'table 2' FROM table_2
) AS combined
WHERE combined.primary_key_field
NOT IN (
SELECT t1.primary_key_field
FROM table_1 AS t1
INNER JOIN table_2 AS t2
ON t1.primary_key_field = t2.primary_key_field
AND t1.some_other_field = t2.some_other_field
AND ... /* join on all fields in tables */
)

关于mysql - 比较同一 MySQL 数据库表的两个版本的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36046725/

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