Select Abfrage von Nichtduplikaten

Manu1038

Neuer Benutzer
Beiträge
3
Hallo zusammen,

ich habe Tabelle mit "Pseudo"-Duplikaten. Und zwar habe ich in dieser Tabelle eine Datumsspalte, die praktisch jede Zeile einzigartig macht. Allerdings geht es mir um den Rest der Zeile. Dort habe ich viele, viele Duplikate. Nun würde ich gerne nur die Zeilen anzeigen lassen, die nach der Datumsspalte keine Duplikate sind, und trotzdem das früheste Datum des ersten Duplikats anzeigen.
Momentan habe ich das:

Code:
Select ID, STATUS, count (*)
From tbl
Group by ID, STATUS
having count(*) > 1


Wenn ich jetzt allerdings noch das Datum mit in diese Abfrage mit rein nehme, krieg ich natürlich gar nichts mehr ausgegeben, weil der having count (*) immer nur gleich 1 sein wird.

Weiß jemand Rat?

Vielen Dank schonmal :)

Gruß
 
Werbung:
vereinfacht (mit einer hochzählenden ID-Spalte und 4 int - spalten) hast Du also:

Code:
test=*# select * from manu1038;
 id | col1 | col2 | col3 | col4
----+------+------+------+------
  1 |  1 |  1 |  1 |  1
  2 |  1 |  1 |  1 |  1
  3 |  1 |  1 |  1 |  1
  4 |  2 |  2 |  2 |  2
  5 |  2 |  2 |  2 |  2
  6 |  3 |  3 |  3 |  3
(6 Zeilen)

wenn ich dirch richtig verstanden haben suchst du nun:

Code:
test=*# select col1, col2, col3, col4, min(id) from manu1038 group by col1, col2, col3, col4;
 col1 | col2 | col3 | col4 | min
------+------+------+------+-----
  3 |  3 |  3 |  3 |  6
  2 |  2 |  2 |  2 |  4
  1 |  1 |  1 |  1 |  1
(3 Zeilen)

Oder hab ich Dich falsch verstanden?
 
Ich habe keine wirkliche ID. Zumindest keinen einzigartigen Primärschlüssel. Meine Tabelle sieht eher so aus:

Code:
"id" | col1 | col2 | col3 | col4
-----+------+------+------+------
  1  |  1   |  1   |  1   |  1
  2  |  1   |  1   |  1   |  1
  3  |  1   |  1   |  1   |  1
  2  |  2   |  2   |  2   |  2
  3  |  2   |  2   |  2   |  2
  1  |  3   |  3   |  3   |  3

Und ich hätte dann gerne:

Code:
id(min) | col1 | col2 | col3 | col4 |
--------+------+------+------+-----
1       | 1    | 1    | 1    | 1
2       | 2    | 2    | 2    | 2
1       | 3    | 3    | 3    | 3
 
Ja. Und?

Code:
test=*# select * from manu1038;
 id | col1 | col2 | col3 | col4
----+------+------+------+------
  1 |  1 |  1 |  1 |  1
  2 |  1 |  1 |  1 |  1
  3 |  1 |  1 |  1 |  1
  2 |  2 |  2 |  2 |  2
  3 |  2 |  2 |  2 |  2
  1 |  2 |  3 |  3 |  3
(6 Zeilen)

test=*# select min(id), col1, col2, col3, col4 from manu1038 group by col1, col2, col3, col4;
 min | col1 | col2 | col3 | col4
-----+------+------+------+------
  1 |  2 |  3 |  3 |  3
  2 |  2 |  2 |  2 |  2
  1 |  1 |  1 |  1 |  1
(3 Zeilen)

PS.: goldene Regel: jede Tabelle bekommt einen PK. JEDE!
 
Werbung:
Zurück
Oben