Seite 1 von 1

Doppelte Einträge einer DB

Verfasst: Mittwoch 5. April 2006, 18:22
von Drizzt
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

Re: Doppelte Einträge einer DB

Verfasst: Mittwoch 5. April 2006, 18:57
von gerold
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
:-)

Verfasst: Mittwoch 5. April 2006, 19:08
von Drizzt
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

Verfasst: Mittwoch 5. April 2006, 19:18
von gerold
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
:-)