Doppelte Einträge einer DB

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
Drizzt
User
Beiträge: 22
Registriert: Mittwoch 8. März 2006, 15:47

Mittwoch 5. April 2006, 18:22

Nabend Gemeinde,

Ich hab eine DB von Postgres nach MySQL übernommen und wollte nun einen Primary Key auf eine Spalte der Tabelle legen -> nennen wir sie passenderweise "ID". Mein Vorgänger hat sich scheinbar auf seinen Sourcecode verlassen und keinen Primary Key in der PG Datenbank gesetzt.

Nun habe ich aber als ID zb. :

DE1Sch01
und
DE1sch01

was bei MySQL unweigerlich (vermutlich auch bei PG) unweigerlich zu einem Duplicate Key Entry führt. Gibt es eine Möglichkeit (Vielleicht sogar easy per SQL) eine Liste aller solcher Fääle zu bekommen, ohne sich erst eine Liste aller "ID"s zu holen und wieder mit allen IDs zu vergleichen ?

Das würde ich aus meinem jetzigen Kenntnisstand nämlich machen, was ein extra Script wäre.

Gruß
Drizzt
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 5. April 2006, 18:57

Drizzt hat geschrieben:Gibt es eine Möglichkeit (Vielleicht sogar easy per SQL) eine Liste aller solcher Fääle zu bekommen
Hi Drizzt!

So eine SQL-Abfrage könnte eventuell so aussehen:

Code: Alles auswählen

SELECT 
  id,
  COUNT(id) AS Anzahl
FROM
  meine_tabelle
GROUP BY
  id
HAVING
  (COUNT(id) > 1)
Ob das MySQL aber auch wirklich schluckt, dass weiß ich nicht. -- Ausprobieren.

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Drizzt
User
Beiträge: 22
Registriert: Mittwoch 8. März 2006, 15:47

Mittwoch 5. April 2006, 19:08

Hmmm, ja tut er, vielen Dank, ich habs mit WHERE probiert, aber ich hat das noch nie so mit der Having Klausel.

Danke dir vielmals ;)
Alex
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 5. April 2006, 19:18

Drizzt hat geschrieben:Hmmm, ja tut er, vielen Dank, ich habs mit WHERE probiert
Hi Alex!

Ich glaube mich erinnern zu können, dass der große Unterschied zwischen WHERE und HAVING der ist, dass WHERE noch bevor die Gruppierung gebildet wurde filtert und HAVING das Ergebnis der Gruppierung filtert.
Du kannst also mit WHERE gar nicht nach dem Ergebnis von COUNT filtern, da dieses zum Zeitpunkt der Verwendung von WHERE noch nicht gebildet wurde.

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Antworten