2017-01-26 2 views
0

Ich habe eine Tabelle mit Spaltennamen kannerhalten doppelten Datensätze in mysql auf der Basis von mehreren Spalten

ID,EMP_NAME,DEPARTMENT,VOTER ID, MOBILE NO,Driver_License_NO,REGISTRATION_DATE 

Kein Mitarbeiter mit mehr als einer Abteilung registrieren werden. Wenn ein Mitarbeiter bei mehr als einer Abteilung registriert wurde, würde dies als DUPLICATE-Datensatz betrachtet werden. Doppelte Datensätze können auf der Basis von doppelten Mobilfunknummern beurteilen. oder Wähler-ID-Nr.

Ich möchte eine Ausgabe wie diese

Name | Previous Department | Current Department | Possible Reason for Duplication(Mobile or Voter ID) 

Sorry für schlechtes Englisch

dank

+0

Was identifiziert einen Mitarbeiter eindeutig? Ich würde? Lizenznummer? – GurV

Antwort

0

Der richtige Weg, dies zu tun, ist die Datenbank die Kontrolle zu tun haben. Nachdem Sie Ihre Daten bereinigt haben, sollten Sie einen eindeutigen Index hinzufügen. So etwas wie dies (ich bin nicht sicher, was ein Mitarbeiter definiert):

create unique index unq_atable_empname_department on atable(empname, department); 

Sie können alle Duplikate erhalten Aggregation mit:

select empname, group_concat(distinct department) as departments 
from atable 
group by empname 
having count(distinct department) > 1; 

Als mögliche Gründe, sollten Sie vielleicht eine andere Frage stellen. Geben Sie Beispieldaten an und erklären Sie, was Sie unter den möglichen Gründen verstehen. Diese Antwort bezieht sich auf den Kern der Frage und identifiziert Duplikate.

Verwandte Themen