我正在处理一个大型数据集,因此遇到了一些问题。
我有一个数据集,如:
表格1
State ID Conditional_Value
AZ 1 Yes
AZ 2 Yes
AZ 5 Yes
表 2
State ID Conditional_Value
AZ 1 No
AZ 3 No
AZ 7 No
我需要这个返回的是
State ID Conditional_Value
AZ 1 Yes
AZ 2 Yes
AZ 3 No
AZ 5 Yes
AZ 7 No
如果表 2 中有重复的 ID,则从表 1 中获取该 ID 的行并选择它。
我努力了
Select State, ID, Conditional_Value
From Table1
Union
Select State, ID, Conditional_Value
From Table2
Where Table2.ID not in (select Table1.ID from Table1)
但是对于我拥有的大型数据集,运行起来太昂贵了。
我已经查看了有关查找重复项并删除它们然后将非重复项插入另一个表的问题,但我还需要比较这两个单独的表。
如果需要更多信息,请告诉我。谢谢!
虽然您似乎已经满意地解决了这个问题,但经典的解决方案是使用
FULL OUTER JOIN
:注意:代码未经测试,并且我没有专门使用 teradata,因此可能存在一些我无法预测的语法问题。但是,据我所知,基本命令和功能应该是正确的。
代码根据
State
和ID
值合并两个表。这些COALESCE
函数确保无论哪个表具有特定行的值,这就是将要使用的值。因为我们Table1
首先看,如果两者都有Table1
和Table2
的值Conditional_Value
,Table1
则将使用 from 的值。