在mysql中选择最大记录

时间:2013-05-01 15:54:21

标签: mysql select max

我有一个包含多个交易的表格。我想要获取最后一笔交易的行。 我使用以下内容:

select n.AccountNumber, max(PostDate), f.TransAmt 
from mp_cycle n, fintrans f
where n.AccountNumber = f.AccountNumber
and TransCode >= '50'
and TransCode <= '59'
group by n.AccountNumber

这将返回特定帐户的最后日期,但TransAmt不是同一记录。

即:

Acct #  Date   Amt
1       1/1    10.00
1       1/2    11.00
1       1/3    12.00
2       1/2    20.00
2       1/3    21.00
2       1/4    22.00

我的选择将返回每个帐户的最后日期,因此行为#1为1/3,行为#2为1/4,但Amt字段不是与该记录一致的amt。

非常感谢任何帮助。

1 个答案:

答案 0 :(得分:1)

有很多方法可以解决这个问题,一个是加入额外的子查询,哪个单独获取每个PostDate的最新AccountNumber。然后子查询的结果将在另一个表上连接,前提是它应匹配两列:AccountNumberPostDate

SELECT  a.*, b.*
FROM    mp_cycle a
        INNER JOIN fintrans b
            ON a.AccountNumber = b.AccountNumber
        INNER JOIN
        (
            SELECT  AccountNumber, MAX(PostDate) max_date
            FROM    fintrans 
            GROUP   BY AccountNumber
        ) c ON  b.AccountNumber = c.AccountNumber AND
                b.PostDate = c.max_date
-- WHERE    ..your conditions here..