2011-11-18 71 views
0

我有这个ai_invoice表。从日期列中选择参考MAX(addDate)的列

enter image description here

我想选择的lastPaymentAmount和lastPaymentDate参照日期列。

for lastPaymentDate我使用MySQL的MAX()这里是我做的。

SELECT 
    SUM(ai_account.amount) as amountPaid, 
    MAX(ai_account.addDate) as lastPaymentDate 
FROM ai_account 
WHERE ai_account.trader_id = :traderId 

我很困惑如何根据lastPaymentDate选择lastPaymentAmount。我期待的结果是3434

回答

2

这里是你必须做的

SELECT 
    ai_account.amount as amountPaid, 
    ai_account.addDate as lastPaymentDate 
FROM ai_account 
WHERE ai_account.id = (
    SELECT 
    id 
    FROM ai_account 
    WHERE ai_account.trader_id = :traderId 
    ORDER BY ai_account.addDate DESC 
    LIMIT 1 
    ) 
2
SELECT 
    ai_account.amount as amountPaid, 
    ai_account.addDate as lastPaymentDate 
FROM ai_account 
WHERE ai_account.addDate = (SELECT MAX(ai_account.addDate) FROM ai_account 
    WHERE ai_account.trader_id = :traderId) AND ai_account.trader_id = :traderId; 

子查询选择从traderId最后ai_account.addDate和WHERE子句强制行此日期和父什么这个ID。

这可能会导致更多的一条记录(同一交易员当天的两条面包)。为了克服这个问题,你可以使用

SELECT 
    SUM(ai_account.amount) as amountPaid, 
    MAX(ai_account.addDate) as lastPaymentDate 
...