Bạn cần sử dụng hai truy vấn phụ như sau:
SELECT a.cid, a.name, a.mobile, b.date, b.balance
FROM account a
JOIN
(
SELECT b1.* FROM balance b1
JOIN
(
SELECT cid, MAX(Date) As maxDate
FROM balance
GROUP BY cid
) b2
ON b1.cid = b2.cid
AND b1.date = b2.maxDate
) b
ON a.cid = b.cid;
Đầu ra:
CID | TÊN | DI ĐỘNG | DATE | CÂN BẰNG |
---|---|---|---|---|
1 | ABC | 12345 | ngày 20 tháng 9 năm 2013 00:00:00 + 0000 | 300 |
2 | XYZ | 98475 | , ngày 21 tháng 9 năm 2013 00:00:00 + 0000 | 600 |
Xem SQLFiddle này
Chỉnh sửa
Như đã thảo luận trong phần nhận xét, truy vấn này cũng có thể được viết chỉ với một truy vấn con:
SELECT a.cid, a.name, a.mobile, b1.date, b1.balance
FROM account a
JOIN balance b1 ON a.cid = b1.cid
JOIN (
SELECT cid, MAX(Date) As maxDate
FROM balance
GROUP BY cid
) b2
ON b1.cid = b2.cid
AND b1.date = b2.maxDate
Xem SQLFiddle được điều chỉnh