Es gibt keine gute Möglichkeit, das zu tun, was Sie in einer einzigen Abfrage vorschlagen, da MySQL nicht wirklich für einen Fall wie diesen ausgelegt ist, in dem die ursprünglichen Primärschlüsseldaten vor dem Einfügen nicht richtig bereinigt wurden.
Mein Vorschlag wäre, eine separate Abfrage vor diesem Update durchzuführen, die diese potenziellen Datensätze identifizieren und entfernen würde. Könnte man so tun, wie folgt:
DELETE
FROM emails AS delete
INNER JOIN emails AS original
ON TRIM(delete.email) = original.email
AND delete.email <> original.email
Dies würde alle Zeilen aus der Tabelle entfernen, dass, wenn in einem Primärschlüssel Konflikt würde beschnitten. Diese Abfrage kann abhängig von der Größe Ihrer Tabelle eine Weile dauern, da Sie keinen Index für die TRIM()
-basierten JOIN-Kriterien verwenden können.