2016-05-27 2 views

Antwort

1

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.

Verwandte Themen