2012-01-17 116 views
4
的最后一个记录

可能重复:
Retrieving the last record in each groupMySQL来得到重复的条目

大家好我有如下

ID FedTaxID RegularPay Payperiodnumber 

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

我想我的表数据得到我的数据如下

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

我尝试了一些东西一样如下,但我没有得到需要的结果

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

任何一个可以帮助我

+3

http://stackoverflow.com/questions/1313120/ – newtover 2012-01-17 12:33:16

+0

'newtover'完美的感谢:-) – Dotnet 2012-01-17 12:38:05

回答

6

这应该给你想要的结果:

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

我对新发布的链接感兴趣;但在这种情况下,您需要每个payperiod编号的最大编号,因此您必须更多地适应这一点。它看起来像这样:

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提供的一整套基于解决方案。感谢您有机会学习一种新的(并且更好地给出链接发布)的方式。

+0

这一个也有效,但更简单的是[检查](http://stackoverflow.com/questions/1313120/retrieving - 最后一个记录在每个组) – Dotnet 2012-01-17 12:40:36

+0

标记为答案,因为它解决了 – Dotnet 2012-01-17 12:41:56