巧用ROW_NUMBER 實現SQL資料任意排序

iSQlServer發表於2010-09-30
最近專案裡遇到這樣的一個小技術問題,新聞可以任意按客戶的需要進行排序,需要實現的效果圖如下:

1
 

  由於各種類別輸入了蠻多測試資訊,有幾百條資料,一個個把排序碼都生成也很麻煩,看能否沒有什麼好辦法能生成不重複的,唯一排序碼?達到如下效果?

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

1
 

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

#div_code img{border:0px;}<!--

Code highlighting produced by Actipro CodeHighlighter (freeware)
http://www.CodeHighlighter.com/

--&gtUPDATE BASE_NEWS
    
SET SortCode = NEWS.SortCode
  FROM (
SELECT ROW_NUMBER() OVER (ORDER BY CreateDate DESC) + 10000000 AS SortCode
               , Id
          FROM BASE_NEWS)
AS NEWS
WHERE NEWS.Id
= BASE_NEWS.Id

相關文章