Heim  >  Artikel  >  Datenbank  >  MySQL löscht doppelte Daten und behält die kleinste ID bei

MySQL löscht doppelte Daten und behält die kleinste ID bei

一个新手
一个新手Original
2017-10-13 10:11:182091Durchsuche

Suchen und löschen Sie doppelte Daten im Internet und behalten Sie die Daten mit der kleinsten ID. Die Methode ist wie folgt:


DELETE
FROM
    people
WHERE
    peopleName IN (
        SELECT
            peopleName
        FROM
            people
        GROUP BY
            peopleName
        HAVING
            count(peopleName) > 1
    )
AND peopleId NOT IN (
    SELECT
        min(peopleId)
    FROM
        people
    GROUP BY
        peopleName
    HAVING
        count(peopleName) > 1
)

Wenn Sie es selbst verwenden, Es wird eine Fehlermeldung angezeigt:


1 delete from tb where id in (SELECT max(id) from tb GROUP BY user HAVING count(user)>1)

[Err] 1093 – Sie können die Zieltabelle „XXX“ für die Aktualisierung nicht in der FROM-Klausel angeben

Ich weiß noch nicht, was die Ursache ist.

Finden Sie dann eine Möglichkeit, die Vorgänge zu verteilen. Filtern Sie zunächst die Daten mit doppelten Benutzern heraus und wählen Sie dann mit max() die größere Zeile aus:

SELECT max(id) from tb GRUPPE NACH Benutzer MIT Anzahl(Benutzer)>1

Dann löschen Sie die redundanten Daten nacheinander entsprechend der erhaltenen Max(ID)


1 delete from tb where id=xx

Das obige ist der detaillierte Inhalt vonMySQL löscht doppelte Daten und behält die kleinste ID bei. 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
Vorheriger Artikel:MySQL-VorkompilierungsfunktionNächster Artikel:MySQL-Vorkompilierungsfunktion