mysql - 获取MYSQL单表中每个组的最后一条记录,条件是忽略某些组

标签 mysql sql group-by greatest-n-per-group

我尝试了 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/

相关文章:

php - 来自mysql的分页数据表,自动刷新

MySQL 选择顶行按另一行分组

MySQL - 从2个不同的表和组结果中选择product_id

mysql - MySQL中计算行的速度

java - 通过 jdbctemplate 在表中插入记录时如何获取自动增量 ID

python - 稍后如何更新MySQL Row?

MYSQL:奇怪的结果是一个简单的 GROUP BY ORDER BY 语句(显示错误的列数据)

java - 字符串日期转换为sql日期格式MM/dd/yyyy?

sql - 动态/条件 SQL 连接?

mysql - 从多列中选择最小值然后计算它们的总和的最佳方法是什么?