2016-04-13 7 views
-1

Ich versuche, eindeutiges Ergebnis von nur einer Spalte (Nachricht) zu erhalten. Ich habe versuchtAnwenden distinct in mehreren Spalten in SQL Server

SELECT DISTINCT 
    [id], [message] 
    FROM Example table 
GROUP BY [message] 

Aber es zeigt nicht das gewünschte Ergebnis. Bitte lassen Sie mich wissen, wie kann ich es tun?

Beispieltabelle

id | Message  | 
    -- ------------ 
    1 | mike  | 
    2 | mike  | 
    3 | star  | 
    4 | star  | 
    5 | star  | 
    6 | sky  | 
    7 | sky  | 
    8 | sky  | 

Ergebnistabelle:

id | Message  | 
-- ------------ 
1 | mike  | 
3 | star  | 
6 | sky  | 
+1

Verwendung 'max' oder' min' auf der id-Spalte verwenden. –

+0

Bitte googeln Sie und lernen Sie die GROUP BY-Klausel in SQL kennen. Googeln Sie auch die Fehlermeldung, die Sie beim Ausführen der von Ihnen geposteten Suchanfrage erhalten haben. –

+0

_ "Es zeigt nicht das gewünschte Ergebnis" _ Nein, weil Sie stattdessen einen Fehler erhalten haben, der ziemlich aussagekräftig ist. Sie können 'Group By' nicht für eine Spalte verwenden, sondern zwei Spalten auswählen. Berücksichtigen Sie, dass jede "Nachrichten" -Gruppe mehrere "IDs" enthalten kann, aber Sie nur eine sehen möchten. Sql-Server möchte nun wissen was. Verwenden Sie daher 'Min',' Max' oder andere Aggregatfunktionen für die Spalte (n), die nicht Teil der 'Group By' sind. –

Antwort

2

Gruppe durch die Spalte, die Sie einzigartig sein wollen und eine Aggregatfunktion auf der anderen Spalte. Sie möchten die niedrigste id für jede Nachricht, so MIN()

select min(id) as id, 
     message 
from your_table 
group by message 
+0

Unbekanntes Duplikat der Logik in dieser Antwort: http: // stackoverflow. com/a/9903573/1507566 –

+0

überhaupt nicht verwandt. –

Verwandte Themen