yo,
Da brauchen wir wohl doch etwas Rauch... :-)
ich hoffe, ich kann da als nichtraucher auch einen beitrag liefern... ;-)
bei beiden möglichkeiten mit unterabfrage und ohne ist dir meiner meinung nach ein kleiner logischer fehler unterlaufen. sprich du versuchst beim vorkommen mehrerer gleicher e-mails immer die max(id) mit ins boot zu nehmen, was sicherlich so erst einmal auch ein guter ansatz ist.
allerdings könnte das HAVING COUNT(*) > 1 in beiden versionen probleme bereiten. schließlich sollte das ziel sein, eine liste der id's zu bekommen, die erhalten werden sollen oder aber eine liste der Id's, die gelöscht werden sollen. und die Max(id) geht den weg alle id's zu bekommen, die letztlich erhalten werden sollen. schließlich können ja auch drei oder mehr datensätze die gleiche e-mail besitzen. da würde ich dann aber auch die id's mir reinnehmen, die nur ein datensatz für eine e-mail adresse haben, sprich das Having komplett entfernen. diese sollen ja auch erhalten bleiben....
Ilja