2016-08-08 5 views
0

Ich habe mein Schema für Konto wie folgt:kann nicht Duplikat mit MySQL erkennen und benennen Sie die Zeichenfolge

AccountID | FileName 

Wenn die Dateinamen wiederholt i sie es gespeichert werden soll, wie:

filename.txt 
filename1.txt 
filename2.txt 
filename3.txt 

Ich bin Dies geschieht derzeit, indem die Anzahl der Duplikate überprüft wird, indem eine Abfrage ausgeführt wird, um die Anzahl der Duplikate zu überprüfen und dann der Dateiname in die gesicherte und schließlich ausgeführte Einfügeabfrage umzubenennen.

Kann diese ganze Prozedur in einer Abfrage durchgeführt werden?

+0

Was möchten Sie also tun, wenn Sie in "Account" einfügen, wenn der Dateiname existiert, möchten Sie den Dateinamen in einen neuen umbenennen? Und was ist der Wert von accountId? – Blank

+0

Entweder brauchen Sie eine gespeicherte Prozedur in mysql, um neue kommende Eingaben auf vorhandene Dateinamen zu überprüfen und zu aktualisieren oder Sie können dies mit Ihrer Programmiersprache tun, was Sie bevorzugen würden und was (Code) Sie bisher versucht haben, es zu erreichen? kannst du diesen Code teilen? – Sami

Antwort

0

Sie können es in einer einzigen Abfrage tun:

Select t.ID, t.Account, z.dupCount 
From Filename 
Join 
    (select Account, Count (*) dupCount 
    from filename 
    group By account 
    Having Count(*) > 1) z 
    On z.account = t.Account 
order By dupCount Desc 
0

Ausführen einer Abfrage überprüfen Anzahl von Duplikaten

Aber die Daten, die Sie uns gezeigt haben hat keine Duplikate.

Ja ich bekomme, dass alle Dateien ursprünglich Dateiname.txt benannt wurden, aber wenn Sie nicht auch den ursprünglichen Namen speichern, dann wissen Sie nicht, was es ein Duplikat von ist. Ein weiteres Problem ergibt sich, wenn wir nicht wissen, ob Sie jemals mit gelöschten Datensätzen umgehen müssen - dann wird eine Zählung nutzlos und der maximale Wert wird auch nicht funktionieren (dateiname10.txt ist kleiner als dateiname1.txt)).

Beachten Sie auch den Fall, in dem Sie 11 Dateien mit dem Namen filename.txt hochgeladen haben. Was passiert, wenn Sie versuchen, eine Datei mit dem ursprünglichen Namen Dateiname1.txt hinzuzufügen? Sie können nicht basierend auf dem ursprünglichen Namen vergleichen - weil es einzigartig ist - aber der abgeleitete Name steht im Konflikt mit filename11.txt

Sie suchen derzeit nach einer Implementierung der Lösung, die Sie für ein Problem entwickelt haben. Die Implementierung dieser Lösung wird absurd komplex sein. Sie sollten wirklich nach einer Lösung suchen, die sich für eine einfachere Implementierung eignet, z. Erstellen eines abgeleiteten Dateinamens, indem dem angegebenen Dateinamen die Autoinkrement-ID des MySQL-Datensatzes vorangestellt wird.