2017-10-10 4 views
-1

Ich habe HIVE für Abfrage verwendet, ich möchte alle Spalten und basierend auf bestimmten spezifischen eine Spalte abfragen.Wählen Sie alle Spalte und distinct um eine bestimmte Spalte

zum Beispiel habe ich Tabelle a;

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

ich alle Schüler mit einzigartigen StudentID abfragen möchten,

select *, distinct (StudentID) von a;

Wie soll ich die Abfrage schreiben?

Thanks a lot

+2

geben Sie bitte die rdbms Sie verwenden (mysql oder liedern?) Und bitte, das Problem ein wenig deutlicher zu erklären, mit einigen Beispieldaten. –

+0

Wenn es mehr als eine Zeile mit derselben StudentID gibt, welche sollte zurückgegeben werden? –

+0

Hallo, ich benutze Hive, ich möchte meine StudentID unterscheiden und alle Spalten drucken. – user2953788

Antwort

2

Warum sollte StudentId dupliziert werden? Das klingt wie ein Problem in Ihrer Anwendung.

Um die einzigartige StudentId s zu erhalten:

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

Sie alle Spalten auf unterschiedliche Weise bekommen, sondern eine Möglichkeit, dass in allen Datenbanken arbeiten, ist ein join:

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

EDIT: In Hive würden Sie Fensterfunktionen verwenden:

select t.* 
from (select t.*, count(*) over (partition by StudentId) as cnt 
     from t 
    ) t 
where cnt = 1; 

Hinweis: Wenn Sie eine Reihe für alle StudentId s wollte, dann würden Sie row_number() statt count(*) verwenden.

+0

Ich brauche alle Spalten abfragen, aber in Ihrem Fall kann nur die eine StudentID Spalte – user2953788

+0

StudentID kann dupliziert werden, da alle Daten aus Protokollen sammeln. – user2953788

+0

@ user2953788. . . Die zweite Abfrage ruft alle Spalten ab. –

0

Abfrage schreiben wie:

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

Beispiel:

SELECT DISTINCT StudentID FROM a; 
Verwandte Themen