mySql获取重复条目的最后记录[重复]
Posted
技术标签:
【中文标题】mySql获取重复条目的最后记录[重复]【英文标题】:mySql to get last records of duplicate entries [duplicate] 【发布时间】:2012-02-12 06:04:24 【问题描述】:可能重复:Retrieving the last record in each group
大家好,我的表格数据如下
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;
谁能帮帮我
【问题讨论】:
***.com/questions/1313120newtover
非常感谢 :-)
【参考方案1】:
这应该会给你想要的结果:
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';
我对 newtover 发布的链接很感兴趣;但是,在这种情况下,您需要每个 payperiodnumber 的最大 id,因此您必须对其进行更多调整。它看起来像:
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 提供了一个简洁的基于集合的解决方案。感谢您有机会学习一种新的(鉴于发布的链接更好)的做事方式。
【讨论】:
这个也可以,但更简单的是Check 解决后标记为答案以上是关于mySql获取重复条目的最后记录[重复]的主要内容,如果未能解决你的问题,请参考以下文章