|
Titel: SQL - doppelte Einträge ausgeben Beitrag von: schnurzli am 11. Mai 2006, 18:02:31 Hallo,
habe folgenden Code verwendet um doppelt vorhandene daten aus einer SQL DB zu lesen. wie mache ich das nur, damit ich die die gesamte zeile und nicht nur die spalte angezeigt bekomme? Code: SELECT DISTINCT test FROM table GROUP BY test HAVING (COUNT(test) > 1) Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: dmaphy am 11. Mai 2006, 18:08:17 Code: SELECT DISTINCT * FROM table GROUP BY test HAVING (COUNT(test) > 1) Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: schnurzli am 11. Mai 2006, 18:17:06 das habe ich bereits probiert, jedoch erhalte ich dann immer:
Zitat Die spalte2-Spalte ist in der Auswahl ungültig, da sie nicht in der Aggregatfunktion und nicht in der Group By Klausel vorhanden ist Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: Gobo am 11. Mai 2006, 18:38:56 Versuch es einfach mal ohne DISTINCT:
Code: SELECT * FROM table GROUP BY test HAVING (COUNT(test) > 1) Wie die Fehlermeldung nämlich bereits angedeutet hat, ist DISTINCT zwingend mit GROUP BY verbunden und kann meines Wissens nach auch nicht mit dem * verwendet werden, sondern immer nur mit eindeutigen Spaltennamen. Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: schnurzli am 11. Mai 2006, 18:46:22 bringt leider dasselbe ergebnis :(
hab jetzt versucht, ein paar spalten einzubinden also anstelle von *, "spalte1, spalte2" jedoch gibt er mir dann die richtige anzahl an zeilen aus, aber nicht den inhalt. wenn ein eintrag doppelt ist, dann wird eine leere zeile ausgegeben, wenn 2 doppelte einträge sind, dann werden 2 leere zeilen ausgegeben... schon komisch... Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: Gobo am 11. Mai 2006, 23:43:57 Hast Du die Möglichkeit, Subqueries zu nutzen? Ich denke damit sollte es dann endlich möglich sein. Auch wenn ich mir eigentlich sicher bin, dass es auch ohne gehen müsste...
Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: Laubi am 12. Mai 2006, 07:37:40 mit subqueries ist es am einfachsten ja.. geht aber teilweise auch ohne, ist nur die frage was du willst
wenn du sowas hast: 1, 2 1, 3 und du nach der ersten spalte (1) gruppieren willst um duplicates in der ersten spalte zu entfernen - welchen wert aus der zweiten nimmst du dann? sprich dann brauchst du eine aggregats funktion pro spalte die nicht gruppiert ist willst du in dieser tabelle: 1, 2 1, 2 1, 3 die duplicates entfernen in bezug auf alle spalten dann musst du einfach dein group by um die zusätzliche spalte erweitern Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: schnurzli am 15. Mai 2006, 13:30:09 also folgendes ist passiert:
ich habe in der datenbank etwa 30.000 einträge. da gibt es aber aufgrund eines bugs in der software, die auf die db zugreift, das problem, dass einige einträge dieselbe nummer haben(sagen wir mal es ist eine personalnummer) da aber jeder eine unique nummer hat, möchte ich nicht alle 30.000 einträge durchsehen sondern einfach mal die doppelten einträge anzeigen. wenn die vorhanden sind, kann ich ja dann weiter vorgehen... nur hätte ich gerne die gesamte zeile ausgegeben, die eine doppelte personalnummer hat... Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: kavalier 90 am 04. März 2010, 22:00:35 ich notiere einfach mal folgende Lösung
Sofern Datensätze doppelt sind SELECT deine tabelle FROM table GROUP BY deine tabelle HAVING Count(*)>1 es werden alle doppelten datensätze ausgeworfen. markiere dann alle gehe auf löschen und einer bleibt stehen. Titel: Re: SQL - doppelte Einträge ausgeben Beitrag von: treFFnix am 20. Mai 2010, 14:38:15 SELECT deine tabelle FROM table GROUP BY deine tabelle HAVING Count(*)>1 DAS ist genau das was hier gesucht wurde!!!!!! Zitat SELECT Spalte FROM Tabelle GROUP BY Spalte HAVING Count(*)>1 |