我尝试了 Karwin 先生在这里提出的解决方案
Retrieving the last record in each group
我有一个单表,其中包含我需要的所有记录和 FF 记录。
--------------------------------------------------
| Keynum | PaymentID | BuyerID | LatestBill |
|----------- | -----------|---------|------------|
| 3 | 4 | 4 | 30000 |
| 2 | 4 | 4 | 10000 |
| 1 | 4 | 4 | 10000 |
| 1 | 9 | 9 | 9999 |
--------------------------------------------------
期望的输出是:
--------------------------------------------------
| Keynum | PaymentID | BuyerID | LatestBill |
|----------- | -----------|---------|------------|
| 3 | 4 | 4 | 30000 |
| 1 | 9 | 9 | 9999 |
--------------------------------------------------
我试过的是这样的:
Select keynum, PaymentID, BuyerId, LatestBill From Sales where LatestBill != 0 group by PaymentID, BuyerID order by keynum Desc;
还有这个
SELECT max(keynum), PaymentID, BuyerID, NewInstallmentBal
FROM aliissales.tblmovedactual
GROUP BY PaymentID, BuyerID DESC;
但是,我得到的是:
--------------------------------------------------
| Keynum | PaymentID | BuyerID | LatestBill |
|----------- | -----------|---------|------------|
| 1 | 4 | 4 | 10000 |
| 1 | 9 | 9 | 9999 |
--------------------------------------------------
我需要的是每组的最后一条记录,每条记录按PaymentID和BuyerID分组。
如果我使用 Max(keynum),它确实会得到每个组的最大键数,但不会得到相应的记录。是让记录与 Keynum 一起使用的更简单方法吗??
此外,如果 LatestBill = 0,则现在将忽略整个 gorup。
即如果
keynum 3 LatestBill = 0, group BuyerID 4 , PaymentID 4 is now ignored.
最佳答案
SELECT a.*
FROM aliissales.tblmovedactual a
INNER JOIN
(
SELECT max(keynum) xx, PaymentID, BuyerID
FROM aliissales.tblmovedactual
GROUP BY PaymentID, BuyerID
) b ON a.PaymentID = b.PaymentID AND
a.BuyerID = b.BuyerID AND
a.keynum = b.xx
关于mysql - 获取MYSQL单表中每个组的最后一条记录,条件是忽略某些组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15332779/