Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/56.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
获取MYSQL singular表中每个组的最后一条记录,条件忽略某些组_Mysql_Sql_Group By_Greatest N Per Group - Fatal编程技术网

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

获取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 |

我尝试了Karwin先生在这里提出的解决方案

我有一个单数表,其中包含我需要的所有FF记录

所需输出为:

 --------------------------------------------------
 | 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