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

数据库 专栏收录该内容
16 篇文章 0 订阅

在机房收费系统的数据库中,有这样的一个表: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'的记录,再取出其中的第一条记录,也就是我们想要的那一条记录

 

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

 

 

 

  • 3
    点赞
  • 21
    评论
  • 4
    收藏
  • 打赏
    打赏
  • 扫一扫,分享海报

评论 21 您还未登录,请先 登录 后发表或查看评论
©️2022 CSDN 皮肤主题:大白 设计师:CSDN官方博客 返回首页

打赏作者

傻丫头与科技

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、C币套餐、付费专栏及课程。

余额充值