Du kan bruge den første SQL, du skrev, men for alle brugere:
SELECT u.*, b.balance, b.date
FROM users u JOIN balance b ON u.id = b.userId
WHERE b.date = (SELECT MAX(date) FROM balance WHERE userId = u.id);
Dette er måske ikke den hurtigste måde at få resultatet på, men det vil give dig, hvad du har brug for. Jeg bruger lignende forespørgsler en del steder i min app.