配置单元:在联接中使用OR

时间:2018-11-16 13:16:52

标签: sql hive hiveql

我有一个数据集

enter image description here

和另一个查询表

enter image description here

借助以下查询

SELECT Col1, Col2, Col3, Col4, a.RefC4, b.RefC4, c.RefC4
from Tab1 LEFT OUTER JOIN  (
      SELECT * from Ref1 where RefC2 = 'A1') a on Col2 = RefC3
     LEFT OUTER JOIN  (
      SELECT * from Ref1 where RefC2 = 'A2') b on Col3 = RefC3
     LEFT OUTER JOIN  (
      SELECT * from Ref1 where RefC2 = 'A4') c on Col4 = RefC3;

我正在获取数据集以下

enter image description here

在此示例中,我有45个值需要针对其进行查找以丰富其他列(Col5,Col6,Col7)。如果使用左外部联接,查询将变得太长且难以维护。我尝试了多种方法,但是由于一个或其他配置单元的限制,我无法以更短的时间来优化它。

我无法将OR与联接一起使用,并且我不想使用row_number()来增加周转时间。

Select ....
from Tab1 LEFT OUTER JOIN  (
      SELECT * from Ref1) a on  (RefC2 = 'A1' and Col2 = RefC3) 
      or (RefC2 = 'A2' and Col3 = RefC3)
      or (RefC2 = 'A4' and Col4 = RefC3);     

请建议以其他方式以更优化,更短的方式编写此查询。

0 个答案:

没有答案