Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Select Abfrage von Nichtduplikaten

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Manu1038, 15 September 2016.

  1. Manu1038

    Manu1038 Neuer Benutzer

    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ß
     
  2. akretschmer

    akretschmer Datenbank-Guru

    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?
     
  3. Manu1038

    Manu1038 Neuer Benutzer

    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
    
     
  4. akretschmer

    akretschmer Datenbank-Guru

    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!
     
  5. Manu1038

    Manu1038 Neuer Benutzer

    Ohmann so einfach...ich habe viel zu kompliziert gedacht. Danke!

    Ja, ist nur leider nicht meine DB und ändern kann ich daran auch nichts :(:rolleyes:
     
    akretschmer gefällt das.
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden