Hive DISTINCT() 用于所有列?

use*_*916 5 sql hive

我想使用下面的玩具示例来说明 DISTINCT 的工作原理。假设你有一个像这样的表,有 2 列,只有 2 行数据:

SELECT * 
FROM table1;

colA   colB
A      B
A      C
Run Code Online (Sandbox Code Playgroud)

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

SELECT DISTINCT colA, colB 
FROM table1;
Run Code Online (Sandbox Code Playgroud)

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

结果可能性1:

A      B
A      C
Run Code Online (Sandbox Code Playgroud)

这种可能性的想法是,虽然值在 上不colA不同,但当考虑两列时,整个返回的行是唯一的或不同的。我不确定,因为colAcolBin之间的逗号的影响SELECT DISTINCT colA, colB以及它是否用于限制DISTINCTto colA

结果可能性2:

A      B
Run Code Online (Sandbox Code Playgroud)

结果可能性3:

A      C
Run Code Online (Sandbox Code Playgroud)

Gor*_*off 8

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

SELECT DISTINCT colA, colB 
FROM table1;
Run Code Online (Sandbox Code Playgroud)

在功能上等同于:

SELECT colA, colB 
FROM table1
GROUP BY colA, colB;
Run Code Online (Sandbox Code Playgroud)

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


小智 5

DISTINCT 适用于完整的行。

A      B
A      C
Run Code Online (Sandbox Code Playgroud)

以上两行不同,所以结果将类似于结果可能性 1,即

A   B
A   C 
Run Code Online (Sandbox Code Playgroud)