mySql获取重复条目的最后记录

mySql to get last records of duplicate entries

本问题已经有最佳答案,请猛点这里访问。

Possible Duplicate:
Retrieving the last record in each group

大家好我有我的表数据如下

1
2
3
4
5
ID   FedTaxID  RegularPay  Payperiodnumber

1    562545366   500            1
2    562545366   501            1
3    562545366   5000           2

我想得到如下数据

1
2
3
 ID    FedTaxID    RegularPay   Payperiodnumber
 2     562545366     501            1
 3     562545366     5000           2

我尝试了一些如下的事情,但我没有得到所需的结果

1
2
3
4
select max(id) ID,regularpay,fedtaxid,payperiodnumber
from tblemployeegrosswagesn1 where fedtaxid="562545366"
group by payperiodnumber
having count(*) >= 1;

谁能帮我


这应该会给你想要的结果:

1
2
3
4
5
6
7
8
9
10
11
12
13
SELECT      t.ID,
            t.FedTaxID,
            t.RegularPay,
            t.Payperiodnumber

FROM        tblemployeegrosswagesn1 t
INNER JOIN  (SELECT MAX(ID) AS MaxId,
                    FedTaxID,
                    Payperiodnumber
             FROM  tblemployeegrosswagesn1  
             GROUP BY FedTaxID, Payperiodnumber) AS InnerQuery ON t.ID = InnerQuery.MaxId AND t.Payperiodnumber = InnerQuery.Payperiodnumber AND t.FedTaxID = InnerQuery.FedTaxID

WHERE        t.FedTaxID = '562545366';

我对发布的链接很感兴趣; 但是,在这种情况下,您需要每个payperiodnumber的最大ID,因此您必须再适应一点。 它看起来像:

1
2
3
4
5
6
7
8
9
10
11
SELECT              t.Id,
                    t.FedTaxId,
                    t.RegularPay,
                    t.Payperiodnumber

FROM                tblemployeegrosswagesn1 t

LEFT JOIN           tblemployeegrosswagesn1 t1  ON (t.FedTaxId = t1.FedTaxId AND t.Payperiodnumber = t1.PayperiodNumber AND t.id < t1.id)  

WHERE               t1.ID IS NULL  
AND                 t.FedTaxId = '562545366'

这更容易阅读。 非常感谢@BillKarwin提供了一个基于整洁的解决方案。 感谢有机会学习新的(并且更好地发布链接)做某事的方式。