求一个SQL 语句,关于在一个用户的多条任职记录中找出时间最新的那条任职记录

zjlsct 2010-01-05 06:50:08
表构成 : 记录id,用户id,任职开始时间,任职结束时间,职务。
一个用户可以有多条任职记录,最新那条为当前任职记录

要找出所有用户或某个用户最新的那条也就是当前的任职记录,这个SQL 查询该什么写呢
...全文
306 10 打赏 收藏 转发到动态 举报
写回复
用AI写文章
10 条回复
切换为时间正序
请发表友善的回复…
发表回复
huangkemin 2010-01-18
  • 打赏
  • 举报
回复
采用not exists那个方法的话,不知道会不会遇到过这种问题(我是在oracle下使用),如果任职开始时间 > t.任职开始时间(为null),则这条null的记录也会被筛选出来。不知道sql-server是否有这个问题,我的解决方法最后在条件里过滤掉时间为null的记录了。建议楼主注意下。

推荐用not exists方法,比max方法快很多
ACMAIN_CHM 2010-01-05
  • 打赏
  • 举报
回复
参考N=1的情况

http://topic.csdn.net/u/20091231/16/2f268740-391e-40f2-a15e-f243b2c925ab.html
分组取最大N条记录方法

dawugui 2010-01-05
  • 打赏
  • 举报
回复
[Quote=引用楼主 zjlsct 的回复:]
表构成 : 记录id,用户id,任职开始时间,任职结束时间,职务。
一个用户可以有多条任职记录,最新那条为当前任职记录

要找出所有用户或某个用户最新的那条也就是当前的任职记录,这个SQL 查询该什么写呢
[/Quote]
[Quote=引用 6 楼 zjlsct 的回复:]
看不懂,各位老大解释一下思路吧,人笨
[/Quote]
--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的意思是一样的.
--小F-- 2010-01-05
  • 打赏
  • 举报
回复
以4楼为例
子查询
select max(任职开始时间) from tb where 用户id=t.用户id
与外面tb表本身对比
查询出用户ID相同 任职开始时间最大的记录
zjlsct 2010-01-05
  • 打赏
  • 举报
回复
看不懂,各位老大解释一下思路吧,人笨
kasin000 2010-01-05
  • 打赏
  • 举报
回复

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,'')='')

--小F-- 2010-01-05
  • 打赏
  • 举报
回复
select 
*
from
tb t
where
任职开始时间=(select max(任职开始时间) from tb where 用户id=t.用户id )
--小F-- 2010-01-05
  • 打赏
  • 举报
回复
select 
*
from
tb t
where
任职开始时间=(select max(任职开始时间) from t where 用户id=t.用户id )
SQL77 2010-01-05
  • 打赏
  • 举报
回复
select 
t.*
from
表 t
where
任职开始时间=(select MAX(任职开始时间) from 表 where 用户id=t.用户id )
子陌红尘 2010-01-05
  • 打赏
  • 举报
回复

select
t.*
from
表 t
where
not exists(select 1 from 表 where 用户id=t.用户id and 任职开始时间>t.任职开始时间)

34,593

社区成员

发帖
与我相关
我的任务
社区描述
MS-SQL Server相关内容讨论专区
社区管理员
  • 基础类社区
  • 二月十六
  • 卖水果的net
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧