declare @users table(id int  , name varchar(300),sex varchar(10) , age int, addtime datetime) ;

 

insert into @users
select 1,'liu','男',30,GETDATE()
union select 2 , 'liu','女',30 , GETDATE()
union select 3 ,'yu','男', 29, GETDATE()
union select 4 , 'liu', '女',30, GETDATE()  ;

 

select name,sex,age,min(addtime),min(id) as id from users

 

题目:

 

有一个表users,主键是Id,有字段name,sex,age,addtime,把name,sex,age相同记录找出来,只剩下addtime最小的记录,其他的删除掉

如上: 删除 Id 是4 的记录.

 

答案:


delete @users  where id not in (
select id from
(    
    select name,sex,age,min(addtime) as ma ,min(id) as id
    from @users group by name,sex,age  
)  as dww  
)

 

妙处在于: 第二个聚合函数: 针对于前面的结果,只有一条: 所以用 Min , Max ,Avg 都没关系.只是找出这条记录所对应的Id来!

相关文章:

  • 2021-11-24
  • 2021-06-10
  • 2021-12-02
  • 2021-12-21
  • 2021-11-13
  • 2021-12-02
  • 2022-01-22
猜你喜欢
  • 2022-12-23
  • 2021-12-12
  • 2022-12-23
  • 2021-05-27
  • 2022-12-23
相关资源
相似解决方案