中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據

發布時間:2020-05-09 13:11:51 來源:網絡 閱讀:529 作者:jirigala_bao 欄目:web開發

最近項目里遇到這樣的一個小技術問題,新聞可以任意按客戶的需要進行排序,需要實現的效果圖如下:

巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據

由于各種類別輸入了蠻多測試信息,有幾百條數據,一個個把排序碼都生成也很麻煩,看能否沒有什么好辦法能生成不重復的,唯一排序碼?達到如下效果?

總不可能人工的一個個輸入吧? 也沒那個耐心的,還是想想有什么好辦法吧?

巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據

 

其實很快就想到了 ROW_NUMBER() 功能,用這個,應該是可行的,折騰了一小會兒,這個SQL語句就寫好了,給大家分享一下,有需要的朋友們可以直接拿過來就可以用了,雖然也沒什么難的,但是自己寫總會折騰一會兒,直接復制過去修改一下,省心省事一些。

 

1 UPDATE BASE_NEWS
2    SET SortCode = NEWS.SortCode
3  FROM (SELECT ROW_NUMBER() OVER (ORDER BY CreateDate DESC) + 10000000 AS SortCode
4               , Id
5          FROM BASE_NEWS) AS NEWS
6 WHERE NEWS.Id = BASE_NEWS.Id
復制代碼

 

此文雖然是過于基礎了一些,但是往往基礎的東西,大家日常生活里需要得更多,希望能對需要的人起點兒參考作用,可以COPY一下就可以用了. 

若有誰可以寫得更好,也可以貼出來分享一下。

 

四個按鈕中的代碼實現可以參考一下

 

巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據代碼
 1         #region private void SetSort(string function, int index) 設置排序順序
 2         /// <summary>
 3         /// 設置排序順序
 4         /// </summary>
 5         /// <param name="function">排序動作</param>
 6         /// <param name="index">索引</param>
 7         private void SetSort(string function, int index)
 8         {
 9             string id = this.gridView.DataKeys[index].Value.ToString();
10             string targetId = string.Empty;
11             try
12             {
13                 this.DbHelper.Open();
14                 // 判斷編輯權限
15                 // this.CheckPermission(this.CategoryId, OperationCode.Edit);
16                 switch (function)
17                 {
18                     case BaseDbSortLogic.CommandSetTop:
19                         if (index > 0)
20                         {
21                             BaseDbSortLogic.SetTop(this.DbHelper, ProjectTable.TableName, id);
22                             this.gridView.SelectedIndex = 0;
23                         }
24                         break;
25                     case BaseDbSortLogic.CommandSetUp:
26                         if (index > 0)
27                         {
28                             targetId = this.gridView.DataKeys[index - 1].Value.ToString();
29                             this.gridView.SelectedIndex = index - 1;
30                             BaseDbSortLogic.Swap(this.DbHelper, ProjectTable.TableName, id, targetId);
31                         }
32                         break;
33                     case BaseDbSortLogic.CommandSetDown:
34                         if ((index + 2< this.gridView.Rows.Count)
35                         {
36                             targetId = this.gridView.DataKeys[index + 1].Value.ToString();
37                             this.gridView.SelectedIndex = index + 1;
38                             BaseDbSortLogic.Swap(this.DbHelper, ProjectTable.TableName, id, targetId);
39                         }
40                         break;
41                     case BaseDbSortLogic.CommandSetBottom:
42                         if ((index + 2< this.gridView.Rows.Count)
43                         {
44                             BaseDbSortLogic.SetBottom(this.DbHelper, ProjectTable.TableName, id);
45                             this.gridView.SelectedIndex = this.gridView.Rows.Count - 2;
46                         }
47                         break;
48                 }
49                 // 獲取列表
50                 this.DoSearch();
51             }
52             catch (Exception ex)
53             {
54                 this.LogException(ex);
55                 throw ex;
56             }
57             finally
58             {
59                 this.DbHelper.Close();
60             }
61         }
62         #endregion

 

 

 

將權限管理、工作流管理做到我能力的極致,一個人只能做好那么很少的幾件事情。
分類: [03] 項目開發經驗
 
綠色通道:好文要頂關注我收藏該文與我聯系 巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據
巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據
信息化建標準開放平臺
關注 - 177
粉絲 - 1226
 
榮譽:推薦博客
+加關注
30
6
 
(請您對文章做出評價)
 
« 博主前一篇:內部管理類軟件基礎架構思想(思路圖解 + 配套免費視頻)
» 博主后一篇:[走火入魔失眠夜]淺談管理軟件信息安全,用戶名、密碼的加密解密【附C#配套加密解密源碼】
 

巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據

Add your comment

32 條回復

1996343
  1. #1樓 cnwei      2010-09-28 14:44
    先頂再看o(∩_∩)o...
     回復 引用 查看   
  2. #2樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-28 14:45
    @cnwei
    熱烈歡迎,很簡單的一個東東。
     回復 引用 查看   
  3. #3樓 尋自己      2010-09-28 14:58
    思想很好,學習了,thanks
     回復 引用 查看   
  4. #4樓 小情      2010-09-28 15:14
     回復 引用 查看   
  5. #5樓 滿晨晨      2010-09-28 15:45
    i have ever meet the problem before
     回復 引用 查看   
  6. #6樓 Jeffery You      2010-09-28 16:00
    為什么不用 Sequence ?用 Sequence 不是更好
     回復 引用 查看   
  7. #7樓 異鄉風鈴      2010-09-28 16:08
    支持
     回復 引用 查看   
  8. #8樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-28 16:11
    @Jeffery You
    sqlserver 有這個東西嗎?
     回復 引用 查看   
  9. #9樓 taia      2010-09-28 16:54
    改一條新聞的次序,還得把整個表的序列重新更新一次?
     回復 引用 查看   
  10. #10樓 Jeffery You      2010-09-28 16:56
    呵呵,我還以為是 Oracle!不好意思。
    不過,你也沒說這是 SQL Server 啊,從文章中我也沒看出來,而且 ROW_NUMBER 第一反應就是 Oracle,SQL Server 是后來才有的。
     回復 引用 查看   
  11. #11樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-28 17:36
    @taia

    主要是有一大堆人工輸入的測試數據在的
     回復 引用 查看   
  12. #12樓 Fine1[未注冊用戶]2010-09-28 18:00
    太基礎了!
     回復 引用   
  13. #13樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-28 19:33
    若是不太基礎了,你也看不出是太基礎了,呵呵。
    引用Fine1:太基礎了!

     回復 引用 查看   
  14. #14樓 lcs-帥      2010-09-28 20:33
    以前排序都是直接使用datetime,目前好像沒有這種需求了。
     回復 引用 查看   
  15. #15樓 Jeffrey.Liang      2010-09-28 22:29
    UPDATE BASE_NEWS
    SET SortCode = NEWS.SortCode
    FROM (SELECT ROW_NUMBER() OVER(ORDER BY CreateDate DESC) + 10000000 AS SortCode
    , Id,CreateDate
    FROM BASE_NEWS) AS NEWS
    WHERE NEWS.Id = BASE_NEWS.Id

    樓主,我能看到這段SQL是在干什么,意思是說,我能看懂“FROM (SELECT ROW_NUMBER() OVER(ORDER BY CreateDate DESC) + 10000000 AS SortCode
    , Id,CreateDate
    FROM BASE_NEWS) AS NEWS”是在生成臨時表。但一般的更新語句都是update tableName set fieldName=value where的形式,但在set和where之間冒出一個from子句出來,這種寫法還是第一次看到。
     回復 引用 查看   
  16. #16樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-29 00:21
    @Jeffrey.Liang
    你說到點子上了,技術就體現在 FROM 而且是虛擬的表上。
    小子洞察力很強的嘛
     回復 引用 查看   
  17. #17樓 ugvanxk      2010-09-29 08:38
    用(當前ID-最小id)+100000
     回復 引用 查看   
  18. #18樓 總想擁有自己的天空      2010-09-29 08:54
    吉日兄,頂一個,基礎但實用
     回復 引用 查看   
  19. #19樓 魚蛋兒      2010-09-29 08:58
    我操,我想死。
     回復 引用 查看   
  20. #20樓 隨處走走      2010-09-29 09:04
    SQL 語句我能理解,可是這個SQL語句怎么解決客戶自定義排序我沒怎么看明白, 我看順序是上移一個,下移一個或是到頂或是到尾是吧?
     回復 引用 查看   
  21. #21樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-29 09:31
    @隨處走走
    置頂、上移、下移、置底
     回復 引用 查看   
  22. #22樓 超級奶崽      2010-09-29 09:52
    有沒有比較好的方法對換兩條記錄的排序號
     回復 引用 查看   
  23. #23樓 軒轅劍      2010-09-29 10:21
    我用一個時間字段來排序的
     回復 引用 查看   
  24. #24樓 cherry .Net      2010-09-29 10:42
    哎喲,不錯哦!!!
     回復 引用 查看   
  25. #25樓 隨處走走      2010-09-29 10:59
    @吉日嘎拉 不僅權限管理
    。。。我能看懂那四個圖標, 我是沒看懂這四個圖標怎么和你提供的SQL語句關聯
     回復 引用 查看   
  26. #26樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-29 11:09
    那4個圖標對應的代碼,就是C#寫的了,不是sql語句了,我把代碼也貼上,給大家一個參考好了。

    引用隨處走走:
    @吉日嘎拉 不僅權限管理
    。。。我能看懂那四個圖標, 我是沒看懂這四個圖標怎么和你提供的SQL語句關聯

     回復 引用 查看   
  27. #27樓 zisehudie      2010-09-29 12:11
    這樣不得把整張表都更新一遍

    這樣是一件很可怕的事情啊 相當影響效率啊
     回復 引用 查看   
  28. #28樓 Peter_pan      2010-09-29 12:18
    吉日的代碼就是很實際,頂一個
     回復 引用 查看   
  29. #29樓[樓主] 吉日嘎拉 不僅權限管理      2010-09-29 13:04
    @zisehudie
    沒有把整張表都更新的,都更新單個
     回復 引用 查看   
  30. #30樓 不訴離殤      2010-10-02 19:16
    大哥 頂一個!
     回復 引用 查看   
  31. #31樓[樓主] 吉日嘎拉 不僅權通用權限      2010-10-12 13:53
    @不訴離殤
    謝謝你的支持啊
     回復 引用 查看   
  32. #32樓 jerryloving      2010-12-24 13:30
    來頂頂
     回復 引用 查看   
 
刷新評論列表刷新頁面返回頂部
最新IT新聞:
· Zynga被OMGPOP超越 不再是Facebook游戲王
· 當當多名用戶賬戶被盜索賠遭拒 回應讓報警處理
· 新iPad入門版拆解:元件成本316美元
· 電信iPhone 4S裸機價格出爐 購買贈1050元話費
· 雅虎訴Facebook警醒創業公司:盡早申請專利
» 更多新聞...
最新知識庫文章:
· 循序漸進學編程
· Web開發:我希望得到的編程學習路線圖
· Google Dart精粹:應用構建,快照和隔離體
· 谷歌是如何做測試的
· URL, URI 和 URN 之間的區別
 
» 更多知識庫文章...
巧用 ROW_NUMBER() 生成不重復的唯一排序碼,按客戶的需要任意排序數據
China-pub 2011秋季教材巡展
China-Pub 計算機絕版圖書按需印刷服務
 
歷史上的今天:
2009-09-28 一步步教你如何用瘋狂.NET架構中的通用權限系統 -- 分級授權
 
向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

门源| 永仁县| 滁州市| 金昌市| 蓬莱市| 东阿县| 松阳县| 盐山县| 岐山县| 谷城县| 含山县| 桑日县| 萍乡市| 长顺县| 浦东新区| 石泉县| 辽宁省| 赫章县| 鹤岗市| 乐平市| 东兰县| 白河县| 隆德县| 金坛市| 湖州市| 明水县| 海门市| 依安县| 新竹县| 旺苍县| 渝中区| 榕江县| 阜南县| 唐山市| 类乌齐县| 潮州市| 瑞安市| 瑞丽市| 湖州市| 搜索| 石门县|