2017-10-10 34 views
-1

我使用HIVE进行查询,我喜欢查询所有列并基于不同的特定列。选择所有列并按一个特定列区分

例如我有表a;

StudentID 
StudentName, 
StudentBirsthDay, 
StudentPassport; 
StudentAge; 
StudentRegisted; 
.... 
.... 

我想查询所有的学生都具有独特的StudentID,从

选择*,不同的(StudentID);

我该如何编写查询?

非常感谢

+2

请注明您所使用的RDBMS(MySQL或不亦乐乎?),并请更清楚地解释这个问题有点,有些示例数据。 –

+0

如果有多于一行的同一个研究生,他们应该返回哪一个? –

+0

嗨,我用过Hive,我喜欢将我的studentID分开并打印所有列。 – user2953788

回答

2

为什么会StudentId被复制?这听起来像是你应用程序中的一个问题。

为了得到独一无二的StudentId S:

select StudentId 
from t 
group by StudentId 
having count(*) = 1; 

你可以在不同的方式中的所有列,但将所有数据库中工作的一种方式是join

select t.* 
from t join 
    (select StudentId 
     from t 
     group by StudentId 
     having count(*) = 1 
    ) tt 
    on t.StudentId = tt.StudentId; 

编辑:在Hive中,您将使用窗口函数:

注意:如果你想一个行所有StudentId S,那么你可以使用row_number(),而不是count(*)

+0

我需要查询所有列,但在您的情况下,只能显示一个StudentID列 – user2953788

+0

StudentID可能会被复制,因为所有数据都是从日志中收集的。 – user2953788

+0

@ user2953788。 。 。第二个查询获取所有列。 –

0

查询写,如:

SELECT DISTINCT column1, column2, ... 
    FROM table_name; 

例如:

SELECT DISTINCT StudentID FROM a; 
相关问题