sql - Hive non-equi Join on OR 条件
问题描述
我有两个表,我想加入 3 个键。但是,其中一个键可能包含另一个表中不存在的值,但我仍然希望在查询时保留这些记录。
与此类似的东西,其中 first_table 中的key_3可能包含 0 值,该值在second_table中不存在。
SELECT
f.key_1,
f.key_2,
f.key_3,
s.column_4
FROM
first_table f
LEFT OUTER JOIN second_table s
ON f.key_1 = s.key_1
AND f.key_2 = s.key_2
AND (f.key_3 = s.key_3 OR f.key_3 = 0)
当我运行这个时,我得到一个错误OR not supported in JOIN current '0'。我知道在 Hive 的较新版本中这是允许的,但在旧版本中是否有解决方法。
解决方案
我可能不完全理解你的问题,但不是一个简单的left join
做你想要的吗?
SELECT f.key_1, f.key_2, f.key_3, s.column_4
FROM first_table f LEFT OUTER JOIN
second_table s
ON f.key_1 = s.key_1 AND
f.key_2 = s.key_2 AND
f.key_3 = s.key_3 ;
如果第二个表中没有匹配项——不管第一个表中的值如何——仍然返回第一个表中的行。
推荐阅读
- android - ADB 无法连接到守护进程
- tensorflow - 如何安装tensorflow==2.3.0
- python - 如何使用循环来调整路径名
- reactive-programming - Spring WebFlux如何合并Mono Objects的结果?
- java - 如何在 libgdx 中创建非常简单的暂停/恢复游戏
- google-maps - 在生产环境中启用 google maps api key
- angular - Stencil 全局样式在发布包并在 Angular 中使用后未应用
- react-native - useEffect 和 useState 未在 fetch 中设置值
- android - 在视图寻呼机 2 中禁用垂直滚动
- excel - 通过 PowerShell 将 .odc 文件导入 Excel