Heim  >  Artikel  >  Datenbank  >  Wie entferne ich doppelte Daten in MySQL?

Wie entferne ich doppelte Daten in MySQL?

零下一度
零下一度Original
2017-06-29 15:42:371408Durchsuche

In diesem Artikel werden hauptsächlich die relevanten Informationen zu MySQL vorgestellt. Detaillierte Erläuterungen zu doppelten Dateninstanzen. Freunde in Not können sich auf

MySQL Detaillierte Erläuterungen zu doppelten Dateninstanzen beziehen

Es gibt zwei Bedeutungen von doppelten Datensätzen: Die eine ist ein vollständig doppelter Datensatz, d. h. alle Felder werden wiederholt, und die andere ist ein Datensatz, bei dem einige Felder wiederholt werden. Für die erste Art der Duplizierung ist es relativ einfach, das Schlüsselwort „distinct“ in der Anweisung query zu verwenden. Fast alle Datenbanksysteme unterstützen die Operation „distinct“. Der Hauptgrund für diese Duplizierung ist ein schlechtes Tabellendesign, das durch Hinzufügen eines Primärschlüssels oder einer eindeutigen Indexspalte zur Tabelle vermieden werden kann.


select distinct * from t;

Für die zweite Art von Duplikatproblemen ist es normalerweise erforderlich, jeden Datensatz unter den Duplikatdatensätzen abzufragen. Angenommen, Tabelle t enthält drei Felder: ID, Name und Adresse. Die ID ist der Primärschlüssel und die doppelten Felder sind Name und Adresse. Es ist erforderlich, einen eindeutigen Ergebnissatz dieser beiden Felder zu erhalten.

--Oracle, MySQL, korrelierte Unterabfrage verwenden


select * from t t1

 where t1.id =

 (select min(t2.id)

  from t t2

  where t1.name = t2.name and t1.address = t2.address);

--Hive unterstützt nur in der FROM-Klausel Verwenden Sie die Unterabfrage , die Unterabfrage muss einen Namen haben und die Spalte muss eindeutig sein


select t1.*

 from t t1,

   (select name, address, min(id) id from t group by name, address) t2

 where t1.id = t2.id;

-- Sie können auch die row_number()-Analyse von hive verwendenFunktion


select t.id, t.name, t.address

 from (select id, name, address,

row_number() over (distribute by name, address sort by id) as rn 

     from t) t 

 where t.rn=1;

Das obige ist der detaillierte Inhalt vonWie entferne ich doppelte Daten in MySQL?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn