![]() |
Wie mehrfache Einträge finden?
Ich hab eine MySQL-Tabelle, in der sich Reihen befinden, die in zwei Feldern mit andern Reihen identisch sind. Diese möchte ich finden (nicht um sie zu löschen, sondern um dort einen Verweis auf die nächste Zeile zu setzen).
Geht das mit (My)SQL-Bordmitteln oder benötige ich da externe Programmlogik? |
Re: Wie mehrfache Einträge finden?
Hi,
Reihen soll Record heissen ??? z.B. folgende Tabelle ??? TABLE1 FIELD1 FIELD2 FIELD2 a 1 e b 2 e c 3 f d 2 e e 3 f f 4 g Wenn Dich jetzt die Field2 - Field3-kombination interessiert, würde ich das wie folgt machen : select t1.field1 from table1 t1 where t1.field2 || t1.field3 in ( select t2.field2 || t2.field3 from table1 t2 group by t2.field2, t2.field3 having count(t2.field2 || t2.field3) > 1) Dieses sql statement sollte Dir b,c,d,e zurückgeben, allerdings nicht a,f weil bei a und f die field2-field3-kombination nur einmal vorkommt (also count = 1) Hoffe, ich hab die Frage richtig verstanden und es hilft weiter. Lutz |
Re: Wie mehrfache Einträge finden?
Die Frage hast du richtig verstanden :thuimb:
Leider funktioniert der Query nicht: Es wird ein Fehler gemeldet beim inneren Select. |
Re: Wie mehrfache Einträge finden?
Das Problem mit mySQL ist schlicht, dass es einfach nix kann (no Offense :roll: )
Vielleicht kann es das:
SQL-Code:
Der Code mag zwar eklig aussehen, aber ich bin in solchen Dingen nicht so sehr erfahren (wenn man sich auf _reines_ SQL beschränken muss).
UPDATE DeineTabelle u
SET u.LinkedPK = (SELECT Min(t.PK) FROM DeineTabelle t WHERE t.Feld1 = u.Feld1 and t.Feld2 = u.Feld2 and ... GROUP BY t.Feld1, t.Feld2, ...) WHERE u.PK != (SELECT Min(t.PK) FROM DeineTabelle t WHERE t.Feld1 = u.Feld1 and t.Feld2 = u.Feld2 and ... GROUP BY t.Feld1, t.Feld2, ... HAVING Count(t.PK) > 1) btw: Es gibt auch kostenlose DBs, die was drauf haben zum Bleistift ![]() |
Re: Wie mehrfache Einträge finden?
Sorry,
kenne mich mit MySQL nicht besonders gut aus. Is 'ne "Quick and Dirty"-Lösung die ich ab und zu mal verwende, allerdings zugegebenerweise nur bei Interbase/Firebird. Ausserdem ist mir auf der Heimfahrt noch eingefallen, dass meine Lösung einen Bug hat :oops: . ab || cd = abcd abc || d = abcd Also besser die Variante von Robert. Lutz |
Re: Wie mehrfache Einträge finden?
@RobertG: Abgesehen davon, dass ich bisher noch keine Ahnung hab, was dein Query macht, krieg ich ne Fehlermeldung:
Zitat:
|
Re: Wie mehrfache Einträge finden?
Zitat:
|
Re: Wie mehrfache Einträge finden?
Tut mir leid wegen der dummen Fragen, aber: Was ist "mein PK"?
Und zunächst würde es mir reichen, einfach alle doppelten aufgelistet zu sehen. Das Updaten der einen Spalte kann ich auch manuell erledigen. |
Re: Wie mehrfache Einträge finden?
Zitat:
Zitat:
SQL-Code:
SELECT SomeColumns
FROM DeineTabelle u WHERE u.PK != (SELECT Min(t.PK) FROM DeineTabelle t WHERE t.Feld1 = u.Feld1 and t.Feld2 = u.Feld2 and ... GROUP BY t.Feld1, t.Feld2, ... HAVING Count(t.PK) > 1) |
Re: Wie mehrfache Einträge finden?
Verdammt... wegen dem SQl-Bug hab ich oben das UPDATE übersehen. Hat mich schon verwundert :?
Leider tuts immer noch nicht. So sieht meine Tabelle table1 aus:
Code:
id hat den Primary Key. Folgendes Statement:
id vorname nachname
SQL-Code:
verursacht folgenden Fehler:
SELECT *
FROM table1 u WHERE u.id != (SELECT Min(t.id) FROM table1 t WHERE t.vorname = u.vorname and t.nachname = u.nachname GROUP BY (t.vorname, t.nachname) HAVING Count(t.id) > 1) Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:25 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz