Você pode usar
not exists
:delete from user
where not exists (select * from message m where m.userid = user.id)
and not exists (select * from archivedMessage am where am.userid = user.id)
not exists
:delete from user
where not exists (select * from message m where m.userid = user.id)
and not exists (select * from archivedMessage am where am.userid = user.id)