2011-11-18 64 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 
...