我所期望的是类似于Diff检查器。我有两个表:表1和表2。它们都有相同的列。表1有版本1的数据,表2有版本2的数据。我需要找到版本2与版本1相比有变化的地方。如果输出中只显示随数据变化的列,可能会很有帮助。
尝试使用
SELECT * FROM Table-1 UNION ALL SELECT * FROM Table-2
数据是巨大的,它需要几个小时来运行,而且我必须检查diff手动张贴这个。我相信应该有一种有效的方法来做到这一点。
表1:
<表类>id 名称 邮件 tbody><<tr>1 person1 person1@mail.com 2person2 person2@mail.com 表类>
为了得到您想要的输出,您可以在匹配id
但不同于name
和email
的条件下使用self join
。然后从每个表中取出union
列。
select b.*
from t1 a
join t2 b on a.id=b.id and (a.email<>b.email or a.name<>b.name)
union
select a.*
from t1 a
join t2 b on a.id=b.id and (a.email<>b.email or a.name<>b.name);
如果我是你,我会把它们并排比较
select a.id,
a.name as v1_name,
b.name as v2_name,
a.email as v1_email,
b.email as v2_email
from t1 a
left join t2 b on a.id=b.id
where a.name<>b.name or a.email<>b.email;