यह तकनीक एक सबक्वायरी में तालिका में स्वयं से जुड़ती है, लेकिन यह केवल एक पंक्ति से मेल खाती है (contact_id और के आधार पर) ईमेल मिलान। चाल यह है कि सबक्वेरी MIN का उपयोग करके केवल एक ईमेल पतों को लौटाती है, सैद्धांतिक रूप से पहला वर्णानुक्रम में (विश्वसनीय नहीं, लेकिन आपने कहा कि इससे कोई फर्क नहीं पड़ता)।
मैंने अच्छे परिणामों के साथ इसका परीक्षण किया है।
UPDATE
email
JOIN (SELECT contact_id, MIN(email) as email
FROM email GROUP BY contact_id) as singles
USING(contact_id, email)
set is_primary=1;