SQL Server 如何查詢最後一條記錄

2021-08-27 15:00:09 字數 1880 閱讀 6122

在機房收費系統的資料庫中,有這樣的乙個表:worklog_info

這個表有什麼作用呢?這個表的作用就是記錄著工作人員的操作記錄,也就是說,乙個一般使用者(操作員或管理員)登陸這個系統,和正常關閉這個系統以後,在這個表中就會增加一條該使用者的使用記錄!

下面是該錶的各個欄位名,有的同學就感覺其中serial列沒什麼用,甚至有的同學自作主張的刪掉該列!那麼我只能說,這麼做真的很不理智!

以我個人的理解:當管理員 1 登入此系統時,在表中新增一條記錄,其中包含,使用者名稱,級別,登入日期,登入時間,電腦名,和狀態。如下圖serial=232的記錄

那麼我們為什麼會出現serial=229這樣只有登入時間卻沒有下線時間的記錄呢?原因就是,該使用者沒有正常退出此系統,比如說:宕機,關機等操作!正因為有這樣不完整的記錄,所以我們就遇到乙個問題,當我們此時正常下線的時候,怎麼樣跳過serial=229這條記錄將下線的日期和時間新增到serial=232這條記錄中呢?

此時 serial這個欄位的作用就突顯出來了!serial這個欄位是當表中新增一條記錄的時候,自動加一

正是因為有了這樣的乙個字段,我們才能實現我們想要的功能!那麼我們到底要怎麼來實現呢?我們到底該怎麼寫查詢語句呢?請看:

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'的記錄,再取出其中的第一條記錄,也就是我們想要的那一條記錄怎麼樣,是不是很簡單!你會了嗎?

sqlserver 查詢儲存過程最後執行情況

最近系統進行重構,有大量的儲存過程無法判斷是否使用,剛好找到了一下sql,可以起到輔助作用,注意只是輔助作用,看下面解釋 sys.dm exec procedure stats,返回快取儲存過程的聚合效能統計資訊。該檢視為每個快取的儲存過程計畫都返回一行,行的生存期與儲存過程保持快取狀態的時間一樣長...

我如何調優SQL Server查詢

原文 我如何調優sql server查詢 我是個懶人,我只想幹盡可能少的活。當我幹活的時候我不想太多。是,你沒看錯,這看起來很糟糕,作為乙個dba這很不合格。但在今天的文章裡,我想給你展示下,當你想對特定查詢建立索引設計時,你如何把你的工作和思考過程傳達給查詢優化器。聽起來很有意思?嗯,那就進入我的...

SqlServer查詢本月第一天,上月最後一天

普通 select dateadd mm,datediff m,0,getdate 1,0 as 上月第一天 dateadd ms,3,dateadd mm,datediff m,0,getdate 0 as 上月最後一天 dateadd mm,datediff m,0,getdate 0 as 本...