a nessuno gli è mai capitata una situazione analoga?
così comunque viene meglio
codice:
update tb1, tb2
set part = -1
where
tb1.email like any (
  select concat( '%@', dx ) from (
    select distinct reverse( left( reverse( email ),locate( '@',reverse( email ) ) - 1 ) ) as dx
    from tb2
    order by dx
  ) as c
);