gpt4 book ai didi

mysql - Left Join查找不同id的两个表之间的差异

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

我有两个 mysql 表:table_oldtable_new,它们都有列:

name, 
surname,
birthdate
birthplace

加上其他信息栏。两者都有一个表之间不匹配的 id 列。一些记录在表之间随着时间的推移而改变,现在我需要第三个表,其中包含在表之间更改(添加或删除)的记录。

因此我需要比较包含namesurname 以及birthdatebirthplace 的表。

我认为我必须使用 Left Join,但我不确定语法。有帮助吗?

最佳答案

MySQL 实际上并不支持正式的 OUTER JOIN 操作,但我们可以使用两个连接的联合来模拟一个操作。使用完全外部联接来包含两个表中与另一个表中的任何内容都不匹配的记录:

SELECT t1.*, 'table one' AS missing
FROM table_old t1
LEFT JOIN table_new t2
ON t1.name = t2.name AND
t1.surname = t2.surname AND
t1.birthdate = t2.birthdate AND
t1.birthplace = t2.birthplace
WHERE t2.name IS NULL
UNION ALL
SELECT t2.*, 'table two'
FROM table_old t1
RIGHT JOIN table_new t2
ON t1.name = t2.name AND
t1.surname = t2.surname AND
t1.birthdate = t2.birthdate AND
t1.birthplace = t2.birthplace
WHERE t1.name IS NULL;

我声明记录已过时的标准是任何一个字段都不匹配。也就是说,如果三个字段一致,但一个字段不一致,那么我不认为它是匹配的。

点击下面的链接获取正在运行的演示。您或许可以完善我的答案,并更轻松地将逻辑上相同的记录对组合在一起,但这需要更多的工作。

Demo

关于mysql - Left Join查找不同id的两个表之间的差异,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47100333/

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