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

标签 sql join hive teradata

这应该很简单,但我无法理解。我需要进行选择以获取某些帐户的更新日期值。

我从这里开始,T1:

+----------+---------+
|  date   | account |
+----------+---------+
| 4/1/2018 |       1 |
| 4/1/2018 |       2 |
| 4/1/2018 |       3 |
| 4/1/2018 |       4 |
| 4/1/2018 |       5 |
+----------+---------+

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

+----------+---------+
|   date   | account |
+----------+---------+
| 7/1/2018 |       1 |
| 7/1/2018 |       2 |
+----------+---------+

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

+----------+---------+
|   date   | account |
+----------+---------+
| 7/1/2018 |       1 |
| 7/1/2018 |       2 |
| 4/1/2018 |       3 |
| 4/1/2018 |       4 |
| 4/1/2018 |       5 |
+----------+---------+

我可以对账号进行加入,但是那些没有改变的怎么办?如何捕捉那些?

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

谢谢!

最佳答案

只是对以前好的答案的补充..也尝试将它与coalesce一起使用,并让我知道它是否可以提高性能。

select t1.Account, coalesce(t2.Date, t1.Date) 
from t1
left outer join t2
  on t2.Account = t1.Account

关于sql - 如何通过比较两个字段并考虑性能来连接表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53015165/

相关文章:

sql - Django左外连接过滤器

hadoop - HIVE多行到多列

hadoop - Google Cloud 上的 Hive 无法与 hive 以外的任何用户访问数据

PHP:MY​​SQL 查询返回错误值

sql - 跨多个服务器复制数据 SQL

mysql - 来自斯坦福公开课的SQL multi-match join

hadoop - 失败 : Execution Error, 从 org.apache.hadoop.hive.ql.exec.mr.MapredLocalTask​​ 返回代码 1

mysql - 可以同时创建主键和自增吗?

sql - 统计双方通话次数 "exchanges"

php - MySQL 连接两个表,其中来自 PHP 变量的 WHERE 语句已经存在