ユニオンを作成し、クエリでエイリアスを使用して、同じ名前にマッピングするさまざまなフィールドを定義できます。1つのテーブルにフィールドがない場合は、空のフィールドにエイリアスをキャストするだけです。
SELECT (staff.name) as name FROM users
left JOIN staff USING (user_id)
UNION
SELECT (customers.first_name) as name FROM users
left JOIN customers USING (user_id);
userIdがPK/FKの場合、1つのテーブルによってのみ返されます。