如何在Hive中的表中选择每对记录?

时间:2018-06-09 04:29:39

标签: sql hive hiveql

在Hive中,我有一个包含两个字段(lat和long)的表。我想找到表中每条记录的前N个最短记录。我想我可以编写一个简单的UDF(或利用一些现有的UDF库)来计算基于lat和long的距离,给出一对lat和long。

现在要做到这一点,我需要编写一个SQL来选择表中的每对记录。例如,如果表有4条记录(A,B,C和D),那么我想生成以下6对:

A, B
A, C
A, D
B, C
B, D
C, D

提前致谢!

2 个答案:

答案 0 :(得分:1)

Hive支持cross join,因此我将其写为:

select t1.col, t2.col
from t t1 cross join
     t t2
where t1.col < t2.col;

此公式假定col是唯一的 - 如您的示例所示。

答案 1 :(得分:0)

我认为你需要交叉申请。

 Select 
     t1.column as c1, 
     t2.column as c2
  From table as t1
Cross apply
   Table as t2
Where t1.column <> t2.column