SQL选择行,但删除电话号码重复的记录

SQL选择行,但删除电话号码重复的记录,sql,Sql,我有一张包含电话号码的申请表。我试图选择应用程序ID降序排列的前10000行(以获取最新的应用程序),但我想删除所有重复的电话号码 我试过了 select distinct * from (select top 10000 Forenames, PhoneNumber from Application order by ApplicationId desc) AS Applications 尽管此查询按名字升序排序,即不再按应用程序id顺序排序。我认为您需要的逻辑是:获取每个电话号码的最新应用

我有一张包含电话号码的申请表。我试图选择应用程序ID降序排列的前10000行(以获取最新的应用程序),但我想删除所有重复的电话号码

我试过了

select distinct * from
(select top 10000 Forenames, PhoneNumber
from Application
order by ApplicationId desc) AS Applications

尽管此查询按名字升序排序,即不再按应用程序id顺序排序。

我认为您需要的逻辑是:获取每个电话号码的最新应用程序id,然后返回有关这些电话号码的信息

select a.*
from (select limit 10000 PhoneNumber, max(ApplicationId) as maxaid
      from Application a
      group by PhoneNumber
      order by max(aid) desc
     ) list join
     Application a
     on a.ApplicationId = list.maxaid
order by ApplicationId desc;

尝试使用group by PhoneNumber,但我不能按应用程序ID订购,因为它不在具有多个
applicationid
PhoneNumber
的group by clauseSo中。要使用哪一个应用程序ID进行订购?您使用的是哪一个DBMS?@MartinSmith您可以按应用程序ID订购,但在您的问题上,它对您没有帮助。很抱歉我之前的推荐。这非常有效。谢谢,我不知道max()函数可以这样使用
SELECT * FROM (select top 10000 Forenames, PhoneNumber, 
ROW_NUMBER() OVER(PARTITION BY PhoneNumber ORDER BY Forenames DESC) AS Row
from Application
order by ApplicationId desc) as temp
Where Row = 1