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
brauchen: In der Hintergrundverwaltung gibt es hä...
Hintergrund Als ich vor einigen Tagen Paging in M...
Aus SEO- und Sicherheitsgründen ist eine 301-Weit...
Inhaltsverzeichnis Frage Reproduktion Implizite K...
1. Drücken Sie Win + R und geben Sie cmd ein, um ...
Vorwort Beim Schreiben von Frontend-Seiten verwen...
In diesem Artikelbeispiel wird der spezifische JS...
Inhaltsverzeichnis Warum brauchen wir Partitionen...
Ich habe heute eine neue Version von MySQL (8.0.2...
Was ist ein Ansichtsfenster? Mobile Browser platzi...
Inhaltsverzeichnis Vorwort JS Magische Zahl Numme...
Das img-Tag in XHTML ist ein sogenanntes selbstsc...
In diesem Artikel wird der spezifische Code von V...
Heute habe ich zufällig den Parameter slave_exec_...
Inhaltsverzeichnis Docker-Images Was ist ein Spie...