34,590
社区成员
发帖
与我相关
我的任务
分享
select * from tb t where date=(select max(date) from tb where name =t.name)
create table tb
(
id int,
date datetime,
name varchar(10)
)
insert into tb values(1,'2011-09-09 10:00:00','cxd')
insert into tb values(2,'2011-09-08 10:00:00','cxd')
insert into tb values(3,'2011-09-07 10:00:00','cxd')
insert into tb values(4,'2011-09-08 10:00:00','yejin')
insert into tb values(5,'2011-09-09 10:00:00','yejin')
insert into tb values(6,'2011-09-10 10:00:00','yejin')
select id ,date , name from tb t
where not exists(select 1 from tb where t.name = name and t.date>date)
/*
id,date,name
3,2011-09-07 10:00:00.000,cxd
4,2011-09-08 10:00:00.000,yejin
(2 行受影响)
修改一下;with tmp
as
(select rownum=row_number()over(partition by CXD order by [date]),
*
from tb)
select * from tmp
where rownum=1
select id ,date , name from tb t
where not exists(select 1 from tb where t.id = id and t.date<date)
select min(date),name from tb group by name