如何解决如何从多个源表中检测新/更改
有 3 个源表,可以在其中添加新用户或更新现有用户配置文件。还有一个包含所有用户的主表,由单独的进程更新。
我需要通过将源表与主表进行比较来创建一个每天刷新并包含新/更新用户的新表。三个源表有一些共同的字段,但有些是特定于表的。
我尝试使用空检查进行完全连接以获取新用户并比较字段以检测更改,但性能确实很慢。 有没有更好的方法来做到这一点?
EG。主表
电子邮件 | col1 | col2 | col3 |
---|---|---|---|
test@gmail.com | va1 | 1 | 3 |
test1@gmail.com | val2 | 1 | 4 |
表 1
电子邮件 | col1 | col2 | col4 |
---|---|---|---|
test1@gmail.com | val3 | 1 | 4 |
test2@gmail.com | val2 | 1 | 4 |
表 2
电子邮件 | col1 | col2 | col5 |
---|---|---|---|
test@gmail.com | va7 | 1 | 10 |
test3@gmail.com | val4 | 4 | 4 |
表 3
电子邮件 | col1 | col2 | col6 |
---|---|---|---|
test4@gmail.com | val5 | 2 | 2 |
预期结果
| email | col1 | col2 | col3 | col4 | col5 | col6|
| --------------- |----- |------|------|------|----- |-----|
| test@gmail.com | va7 | 1 | 3 | null | 10 | null|
| test1@gmail.com | va3 | 1 | 4 | 4 | null | null|
| test2@gmail.com | va2 | 1 | null| 4 | null | null|
| test3@gmail.com | va4 | 4 | null| null | 4 | null|
| test4@gmail.com | va5 | 2 | null| null | null | 2 |
解决方法
看看使用集合论 - 它在 SELECT
语句中实现为 UNION
、EXCEPT
和 INTERSECT
。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。