DELETE FROM xxx WHERE id NOT in( SELECT tmp.id FROM(SELECT id,COUNT(id) AS cnt FROM xxx GROUP BY ticket_id,ota_id HAVING cnt>1)tmp UNION ALL SELECT tmp2.id FROM (SELECT id,COUNT(id) AS cnt FROM xxx GROUP BY ticket_id,ota_id HAVING cnt=1)tmp2)