获取MYSQL singular表中每个组的最后一条记录,条件忽略某些组
我尝试了Karwin先生在这里提出的解决方案 我有一个单数表,其中包含我需要的所有FF记录 所需输出为:获取MYSQL singular表中每个组的最后一条记录,条件忽略某些组,mysql,sql,group-by,greatest-n-per-group,Mysql,Sql,Group By,Greatest N Per Group,我尝试了Karwin先生在这里提出的解决方案 我有一个单数表,其中包含我需要的所有FF记录 所需输出为: -------------------------------------------------- | Keynum | PaymentID | BuyerID | LatestBill | |----------- | -----------|---------|------------| | 3 | 4 | 4 |
--------------------------------------------------
| Keynum | PaymentID | BuyerID | LatestBill |
|----------- | -----------|---------|------------|
| 3 | 4 | 4 | 30000 |
| 1 | 9 | 9 | 9999 |
--------------------------------------------------
我尝试的是:
还有这个
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分组
如果我使用Maxkeynum,它确实会得到每个组的max keynum,但不会得到相应的记录。是否有一种更简单的方法让记录与Keynum匹配
此外,如果LatestBill=0,则现在将忽略整个gorup
如果
选择keynum、PaymentID、BuyerID、NewInstallmentBal 来自aliissales.tblmovedatal,其中keynum位于 选择maxkeynum 来自aliissales.tblmovedatal按PaymentID分组
选择keynum、PaymentID、BuyerID、NewInstallmentBal 来自aliissales.tblmovedatal,其中keynum位于 选择maxkeynum 来自aliissales.tblmovedatal按PaymentID分组
谢谢,但我在哪里添加一个条件来忽略满足特定条件的记录?示例:如果LatestBill=0,则记录将被忽略。我尝试在连接中添加where语句,但现在它显示2 | 4 | 4 | 100000您可以在最外层的select ex中添加该语句,如果我可以问的话,maxkeynum旁边的xx代表什么??编辑:啊,它是一个…别名?@Malky.Kid哦,它叫专栏别名。好的,我要读更多的内容。这是一个非常好的技术,非常感谢,谢谢。但是我在哪里添加一个条件来忽略满足特定条件的记录呢?示例:如果LatestBill=0,则记录将被忽略。我尝试在连接中添加where语句,但现在它显示2 | 4 | 4 | 100000您可以在最外层的select ex中添加该语句,如果我可以问的话,maxkeynum旁边的xx代表什么??编辑:啊,它是一个…别名?@Malky.Kid哦,它叫专栏别名。好的,我要读更多的内容。这是一个很棒的技巧,非常感谢
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 |
--------------------------------------------------
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