所有列的Hive DISTINCT()?

时间:2017-03-14 18:47:01

标签: sql hive

我想通过下面的玩具示例澄清DISTINCT的工作原理。假设你有一个这样的表,有2列,只有2行数据:

SELECT * 
FROM table1;

colA   colB
A      B
A      C

假设我运行了一个SELECT DISTINCT查询:

SELECT DISTINCT colA, colB 
FROM table1;

上面的查询将返回以下哪些结果?

结果可能性1:

A      B
A      C

对这种可能性的思考是,虽然colA上的值不明显,但当考虑两列时,整个返回的行是唯一的或不同的。我之所以不确定,是因为colAcolBSELECT DISTINCT colA, colB之间逗号的影响,以及它是否有助于将DISTINCT限制为colA

结果可能性2:

A      B

结果可能性3:

A      C

2 个答案:

答案 0 :(得分:3)

DISTINCT适用于完整行。

A      B
A      C

以上两行不同,结果将与结果可能性1相同 即

A   B
A   C 

答案 1 :(得分:2)

也许这会有所帮助。这个查询:

SELECT DISTINCT colA, colB 
FROM table1;

在功能上等同于:

SELECT colA, colB 
FROM table1
GROUP BY colA, colB;

它会返回数据中出现的所有colA / colB对。