Sie können das erste von Ihnen geschriebene SQL verwenden, aber für alle Benutzer:
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);
Dies ist vielleicht nicht der schnellste Weg, um das Ergebnis zu erhalten, aber es gibt Ihnen, was Sie brauchen. Ich verwende ähnliche Abfragen an einigen Stellen in meiner App.