Możesz użyć pierwszego napisanego kodu SQL, ale dla wszystkich użytkowników:
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);
To może nie jest najszybszy sposób na uzyskanie wyniku, ale da ci to, czego potrzebujesz. Używam podobnych zapytań w wielu miejscach w mojej aplikacji.