Anda dapat menggunakan SQL pertama yang Anda tulis tetapi untuk semua pengguna:
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);
Ini mungkin bukan cara tercepat untuk mendapatkan hasil, tetapi ini akan memberi Anda apa yang Anda butuhkan. Saya menggunakan kueri serupa di beberapa tempat di aplikasi saya.