如何通过比较两个字段来连接表,并考虑性能

Chu*_*dro 2 sql hive join teradata

这应该很简单但我无法得到它.我需要做一个选择来为某些帐户获取更新的日期值.

我从这里开始,T1:

+----------+---------+
|  date   | account |
+----------+---------+
| 4/1/2018 |       1 |
| 4/1/2018 |       2 |
| 4/1/2018 |       3 |
| 4/1/2018 |       4 |
| 4/1/2018 |       5 |
+----------+---------+
Run Code Online (Sandbox Code Playgroud)

然后在T2中更新一些日期:

+----------+---------+
|   date   | account |
+----------+---------+
| 7/1/2018 |       1 |
| 7/1/2018 |       2 |
+----------+---------+
Run Code Online (Sandbox Code Playgroud)

如何将此输出输入T3,仅更新这些帐户?

+----------+---------+
|   date   | account |
+----------+---------+
| 7/1/2018 |       1 |
| 7/1/2018 |       2 |
| 4/1/2018 |       3 |
| 4/1/2018 |       4 |
| 4/1/2018 |       5 |
+----------+---------+
Run Code Online (Sandbox Code Playgroud)

我可以加入帐号,但那些没有改变的是什么?如何捕捉那些?

此外,T1有大约800万条记录,因此性能将是一个因素.从Teradata中提取,加载到Hive中.

谢谢!

vik*_*ana 8

只是对以前的好答案的补充..尝试使用它coalesce也让我知道它是否提高了性能.

select t1.Account, coalesce(t2.Date, t1.Date) 
from t1
left outer join t2
  on t2.Account = t1.Account
Run Code Online (Sandbox Code Playgroud)