SQL排序後將序號填入指定字段

2021-07-29 11:30:25 字數 836 閱讀 1053

如果資料沒有刪除的情況下主鍵與行號是一致的,但在刪除某些資料,行號就與主鍵不一致了,這時需要查詢行號就需要用新的方法,在sql server2005之前,需要使用臨時表,但在sql server2005中,使用row_number()非常方便。

以下是乙個查詢語句,意思是按照cid將資料排序,然後將排序後的序號填入新建的字段rownum。

select row_number() over (order by cid) as rownum,* from t_gene
查詢結果:

2.運用

以下是本文需要達到的目的,即排序後,將排序後的序號更新到指定字段。

with ts as(select row_number() over (order by clccode) as rn,* from t_gene)update tsset  cdkxh=rn
執行結果:

未排序前。此時可以看到欄位cdkxh大小參差不齊

排序後,將臨時欄位rn的序號更新到字段cdkxh

本文出自 「世界都一樣」 部落格,請務必保留此出處

mysql排序後顯示排序序號

網上找的乙個比較齊全的解釋案例,拿來記錄一下 與 的區別 賦值的意思。在set update select 中表示賦值的意思,用的比較少一般都用 但是在用變數實現行號時 比如本文標題獲取排列序號 一定要用 等於的意思,只有當set 和 update時,和 的意思是一樣的,表示賦值,其餘情況都是等於的...

關於排序後原序號問題

乙個陣列的數,排序後要求其原序號 方法一 如果陣列總共有小於1000個數 所以給每個ti都 1001,在加上當前序號 可以保證排序的時候序號不干擾排序 又可以方便輸出序號 只需mod1001輸出序號,1001 輸出值 int num a i 1001 序號 int sum a i 1001 值樣例 ...

sql中排序序號 怪異的排序

今天在群裡看到了這樣的乙個需求,如下圖所示,將圖中左邊的資料轉變成右邊的結果。咋一看,不就是先按姓名做排序,然後再分別對班組 機台號做排序麼。按這個思路寫出了 sql 表結構及資料在文末 得到的結果和預期的有點不一樣。select from weird order order by 姓名,班組,機台...