Puoi creare un'unione e utilizzare un alias nella query per definire diversi campi di mappatura per lo stesso nome, se non c'è un campo in una tabella, devi semplicemente lanciare l'alias per un campo vuoto:
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);
Se l'ID utente è un PK/FK verrà restituito solo da una tabella.