select t.* from 表 t where 任职开始时间=(select MAX(任职开始时间) from 表 where 用户id=t.用户id )
select * from tb t where 任职开始时间=(select max(任职开始时间) from t where 用户id=t.用户id )
select * from tb t where 任职开始时间=(select max(任职开始时间) from tb where 用户id=t.用户id )
create proc sp_test @userId int as select t.* from 表 t where not exists(select 1 from 表 where 用户id=t.用户id and 任职开始时间>t.任职开始时间) And(t.userid=@userid or isnull(@userid,'')='')
以4楼为例 子查询 select max(任职开始时间) from tb where 用户id=t.用户id 与外面tb表本身对比 查询出用户ID相同 任职开始时间最大的记录
--1 select t.* from tb t where 任职开始时间 = (select max(任职开始时间) from tb where 用户id = t.用户id)--2 select t.* from tb t where not exists(select 1 from tb where tb where 用户id = t.用户id and 任职开始时间 > t.任职开始时间)--3 --这个你应该能看懂了. select m.* from tb m, (select 用户id , max(任职开始时间) 任职开始时间 from tb group by 用户id) n where m.用户id = n.用户id and m.任职开始时间 = n.任职开始时间实际上1,2和3的意思是一样的.
t.*
from
表 t
where
任职开始时间=(select MAX(任职开始时间) from 表 where 用户id=t.用户id )
*
from
tb t
where
任职开始时间=(select max(任职开始时间) from t where 用户id=t.用户id )
*
from
tb t
where
任职开始时间=(select max(任职开始时间) from tb where 用户id=t.用户id )
create proc sp_test
@userId int
as
select
t.*
from
表 t
where
not exists(select 1 from 表 where 用户id=t.用户id and 任职开始时间>t.任职开始时间)
And(t.userid=@userid or isnull(@userid,'')='')
子查询
select max(任职开始时间) from tb where 用户id=t.用户id
与外面tb表本身对比
查询出用户ID相同 任职开始时间最大的记录
select t.* from tb t where 任职开始时间 = (select max(任职开始时间) from tb where 用户id = t.用户id)--2
select t.* from tb t where not exists(select 1 from tb where tb where 用户id = t.用户id and 任职开始时间 > t.任职开始时间)--3
--这个你应该能看懂了.
select m.* from tb m,
(select 用户id , max(任职开始时间) 任职开始时间 from tb group by 用户id) n
where m.用户id = n.用户id and m.任职开始时间 = n.任职开始时间实际上1,2和3的意思是一样的.
分组取最大N条记录方法