渡辺です。
考えてみたら、もう少し整理できました。
delete from x
where not (memberid, assigntime) in
(select memberid,max(assigntime) from x
group by memberid);
一つのmemberidに対し、まったく同じassigntimeが複数ある場合は
これではダメですが、そのケースは考えられないので、これでいいようです。
すっきりしました。
ありがとうございました。