现在的位置: 首页 > 综合 > 正文

SQL Server 如何查询最后一条记录

2014年02月13日 ⁄ 综合 ⁄ 共 1014字 ⁄ 字号 评论关闭

在机房收费系统的数据库中,有这样的一个表:worklog_info

 

这个表有什么作用呢?这个表的作用就是记录着工作人员的操作记录,也就是说,一个一般用户(操作员或管理员)登陆这个系统,和正常关闭这个系统以后,在这个表中就会增加一条该用户的使用记录!

 

下面是该表的各个字段名,有的同学就感觉其中serial列没什么用,甚至有的同学自作主张的删掉该列!那么我只能说,这么做真的很不理智!

 

以我个人的理解:当管理员 1 登录此系统时,在表中添加一条记录,其中包含,用户名,级别,登录日期,登录时间,电脑名,和状态。如下图serial=232的记录

 

那么我们为什么会出现serial=229这样只有登录时间却没有下线时间的记录呢?原因就是,该用户没有正常退出此系统,比如说:死机,关机等操作!正因为有这样不完整的记录,所以我们就遇到一个问题,当我们此时正常下线的时候,怎么样跳过serial=229这条记录将下线的日期和时间添加到serial=232这条记录中呢?

 

此时 serial这个字段的作用就突显出来了!serial这个字段是当表中添加一条记录的时候,自动加一

 

正是因为有了这样的一个字段,我们才能实现我们想要的功能!那么我们到底要怎么来实现呢?我们到底该怎么写查询语句呢?请看:

select top 1 * from worklog_Info where UserID='1' order by serial desc

 

下面就来给大家解释一下这条查询语句:

 

select * from worklog_Info

这条语句大家都懂吧,查询work_Info表中的所有记录

 

select * from worklog_Info where userid='1'

这条语句大家也都明白吧,查询work_Info表中userid字段等于'1' 的记录

select top 1 * from worklog_Info where userid='1'

这条语句什么意思呢?就是查询work_Info表中所有userid字段等于'1'记录的第一条

 

select top 1 * from work_Info where userid='1' order by serial desc

这条语句就是我们最后想要的,也就是先把worklog_Info表中的记录按serial字段以倒序来排序,然后在查询出其中userid字段等于'1'的记录,再取出其中的第一条记录,也就是我们想要的那一条记录

 

怎么样,是不是很简单!你会了吗?

 

 

 

【上篇】
【下篇】

抱歉!评论已关闭.