Assuming that (Contact, School) constitute your logical key then this should work. You can run the SELECT first and if you like the results then run the DELETE.
select t.*
--delete t
from (
select contact, school, min(id) idToKeep
from <table>
group by contact, school
having count(*) > 1
) dupes
inner join <table> t
on t.contact = dupes.contact
and t.school = dupes.school
where t.id > dupes.idToKeep
Once that is done then you should put a UNIQUE constraint on the table to prevent more duplicate values.
Be One with the Optimizer
TG