SQL-Anweisung /* Einige Methoden zum Eliminieren doppelter Zeilen in MySQL ---Chu Minfei ---2010-08-12 22:49:44.660 --Bitte geben Sie beim Zitieren oder Nachdruck die Quelle an: http://blog.csdn.NET/feixianxxx */ ----------------Alle Felder werden wiederholt------------------------ --1 Verwenden Sie die Tabellenersetzung, um Duplikate zu entfernen. Erstellen Sie eine Tabelle test_1 (ID int, Wert int); füge test_1 ein, wähle 1,2, vereinigung alle, wähle 1,2, vereinigung alle, wähle 2,3; --Erstellen Sie eine leere temporäre Tabelle mit der gleichen Struktur wie die Quelltabelle. create table tmp like test_1; --Eindeutige Datensätze in die temporäre Tabelle einfügen insert tmp select distinct * from test_1; --Löschen Sie die ursprüngliche Tabelle. Drop-Tabelle test_1; --Ändern Sie den Namen der temporären Tabelle in die Zieltabelle. Benennen Sie die Tabelle tmp in test_1 um. --showmysql> wähle * aus test_1; +------+--------+ | ID | Wert | +------+--------+ | 1 | 2 | | 2 | 3 | +------+--------+ --2. Fügen Sie die Attributspalte auto_increment hinzu (diese Methode kann nur für MyISAM- oder BDB-Engine-Tabellen verwendet werden) Tabelle test_1 erstellen (ID int, Wert int) Engine=MyISAM; füge test_1 ein, wähle 1,2, vereinigung alle, wähle 1,2, vereinigung alle, wähle 2,3; Tabelle ändern, test_1, ID2 hinzufügen, int nicht null, auto_increment, Primärschlüssel hinzufügen (ID, Wert, ID2); wähle * aus test_1; +----+-------+-----+ | ID | Wert | ID2 | +----+-------+-----+ | 1 | 2 | 1 | | 1 | 2 | 2 | | 2 | 3 | 1 | +----+-------+-----+ Löschen Sie aus Test_1, wobei ID2<>1; Tabelle ändern, Test_1, ID2 löschen; wähle * aus test_1; +----+--------+ | ID | Wert | +----+--------+ | 1 | 2 | | 2 | 3 | +----+--------+ -------------------Einige Felder wiederholen sich--------------------- --1. Fügen Sie einen Index hinzu, indem Sie die Tabelle test_2 (ID int, Wert int) erstellen. füge test_2 ein, wähle 1,2, vereinigung aller, wähle 1,3, vereinigung aller, wähle 2,3; Ändern Sie die IGNORE-Tabelle test_2 und fügen Sie den Primärschlüssel (ID) hinzu. wähle * aus test_2; +----+--------+ | ID | Wert | +----+--------+ | 1 | 2 | | 2 | 3 | +----+--------+ Wir können sehen, dass der Datensatz 1 3 verschwunden ist. Wir können hier auch die Unique-Einschränkung verwenden, da die Spalte möglicherweise NULL-Werte enthält, aber hier kann NULL mehrfach sein. --2.Join-Tabelle löschen, Tabelle erstellen test_2(id int,value int); füge test_2 ein, wähle 1,2, vereinigung aller, wähle 1,3, vereinigung aller, wähle 2,3; lösche A aus test_2 a verbinde (wähle MAX(Wert) als v ,ID aus test_2 gruppiere nach ID) b auf a.id=b.id und a.value<>bv; wähle * aus test_2; +------+--------+ | ID | Wert | +------+--------+ | 1 | 3 | | 2 | 3 | +------+--------+ --3. Die Verwendung von Increment_auto kann auch die zweite Methode sein, um Duplikate aus allen oben genannten Feldern zu entfernen. --4. Fehleranfällige Methoden --Einige Freunde denken möglicherweise an die Unterabfragemethode. Probieren wir es aus. create table test_2 (id int, value int); füge test_2 ein, wähle 1,2, vereinigung aller, wähle 1,3, vereinigung aller, wähle 2,3; lösche a aus test_2 a, wo existiert (wähle * aus test_2, wo a.id=id und a.value<value); /*FEHLER 1093 (HY000): Sie können in der FROM-Klausel keine Zieltabelle „a“ für die Aktualisierung angeben*/ Derzeit ist es nicht möglich, in einer Unterabfrage aus einer Tabelle zu löschen und gleichzeitig aus derselben Tabelle auszuwählen. ------------------Bestimmte doppelte Zeilen löschen------------- --Hauptsächlich durch Order by +Limit oder direktes Limit Tabelle erstellen test_3(id int,value int); füge test_3 ein, wähle 1,2, alles vereinigen, wähle 1,3, alles vereinigen, wähle 1,4, alles vereinigen, wähle 2,3; --Dies dient dazu, den Datensatz mit dem kleinsten ID=1-Wert beizubehalten und die Datensätze mit anderen IDs zu löschen. Löschen Sie aus Test_3, wo ID=1 ist, sortiert nach Wert, absteigende Grenze 2; wähle * aus test_3; +------+--------+ | ID | Wert | +------+--------+ | 1 | 2 | | 2 | 3 | +------+--------+ Wenn Sie nur Datensätze löschen und einen behalten möchten, können Sie die Bestellung entfernen, indem Sie Das könnte Sie auch interessieren:
|
<<: Die Verwendung von setState in React und die Verwendung von synchron und asynchron
>>: Verwandte Befehle zur vollständigen Deinstallation von Nginx unter Ubuntu 16.04
1. Abnormale Leistung beim Docker-Start: 1. Der S...
Ich habe kürzlich die Tutorial-Reihe zu CSS-Anima...
Vorwort Jeder weiß, dass das Partitionsfeld Teil ...
Vorwort: Die Funktion „Gruppieren nach“ ruft das ...
Hinweis: Diese Methode ist nur auf WebKit-basiert...
Inhaltsverzeichnis 1. Überwachungseigenschaften a...
Vorwort HTTP ist ein zustandsloses Kommunikations...
Inhaltsverzeichnis Allgemeine Entwicklung von Upl...
(1) HTML: HyperText Markup Language, die im Wesen...
[LeetCode] 196.Doppelte E-Mails löschen Schreiben...
Vorwort Bei der Installation des Systems haben wi...
Schritt 1: Öffnen Sie mit dem Editor die Datei „m...
In diesem Artikel wird der spezifische Code von V...
Inhaltsverzeichnis einführen 1. Pica 2. Lena.js 3...
Hintergrund: Ich möchte einen SAP ECC Server inst...