Bạn có thể sử dụng SQL đầu tiên mà bạn đã viết nhưng đối với tất cả người dùng:
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);
Đây có thể không phải là cách nhanh nhất để nhận được kết quả, nhưng nó sẽ cung cấp cho bạn những gì bạn cần. Tôi sử dụng các truy vấn tương tự ở khá nhiều nơi trong ứng dụng của mình.