new*_*mer 6 mysql sql view max
我有两个表帐户和余额
/---------------------\
| cid | name | mobile |
|---------------------|
|  1  | ABC  | 12345  |
|---------------------|
|  2  | XYZ  | 98475  |
\---------------------/
/----------------------------\
| date       | cid | balance |
|----------------------------|
| 2013-09-19 |  1  |   5000  |
|----------------------------|
| 2013-09-19 |  2  |   7000  |
|----------------------------|
| 2013-09-20 |  1  |    300  |
|----------------------------|
| 2013-09-20 |  2  |   4500  |
|----------------------------|
| 2013-09-21 |  2  |    600  |
\----------------------------/
我想加入这两个表,并获得特定cid的最大日期余额.
输出结果为 -
/--------------------------------------------\
| cid | name | mobile | date       | balance |
|--------------------------------------------|
|  1  | ABC  | 12345  | 2013-09-20 |   300   |
|--------------------------------------------|
|  2  | XYZ  | 98475  | 2013-09-21 |   600   |
\--------------------------------------------/
him*_*056 12
您需要使用两个子查询,如下所示:
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;
输出:
| CID | NAME | MOBILE |                             DATE | BALANCE |
|-----|------|--------|----------------------------------|---------|
|   1 |  ABC |  12345 | September, 20 2013 00:00:00+0000 |     300 |
|   2 |  XYZ |  98475 | September, 21 2013 00:00:00+0000 |     600 |
| 归档时间: | 
 | 
| 查看次数: | 5646 次 | 
| 最近记录: |