选择不同的列值对

时间:2017-09-29 07:55:35

标签: sql group-by hive hiveql

我有一张这样的表

A1 | A2
a  | b
c  | d
b  | a
a  | b

我想选择不同的对:

A1 | A2
a  | b
c  | d

我试过了:

select a, b from (
select a, b , a|b as ab, b|a as ba from T
)t where ab!=ba group by a, b

任何人都对我如何做到这一点有更好的了解? 感谢

2 个答案:

答案 0 :(得分:1)

符合ANSI标准的方法是使用 Key: 102bob Key: 109aritra 表达式将每对A1A2值重新排列为最小值/最大值。然后在这个派生表上选择distinct。

CASE

答案 1 :(得分:0)

如果不涉及NULL值,这将是最干净的方法

select  distinct
        least    (A1,A2) as A1
       ,greatest (A1,A2) as A2

from    t
;
+-----+-----+
| a1  | a2  |
+-----+-----+
| a   | b   |
| c   | d   |
+-----+-----+