日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

教你学会Sql中 ROW_NUMBER的用法

發布時間:2024/4/17 编程问答 30 豆豆
生活随笔 收集整理的這篇文章主要介紹了 教你学会Sql中 ROW_NUMBER的用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
ROW_NUMBER SqlServer 2005 推出的新功能。
語法:select *,ROW_Number() over(order by 字段) as '新列名' from table
顧名思義:ROW_NUMBER() 為根絕條件查詢出來的數據添加一列(有序的一列,連續序號的1,2,3....),雖然說數據庫中的表的自增列的ID也是連續的,
但是根據篩選條件或者刪除行導致ID序號出現斷號,而ROW_NUMBER()這個方法恰恰可以生成一個新的一列(序號相連),最主要的應用就是SQL分頁;
1select * from Table_1

?

圖一??

(2)select ROW_NUMBER() over(order by name desc) as zhong, * from Table_1

圖二?? 按照一個字段,生成一個新的具有排序功能的字段,本例是生成了一個有序號zhong字段,按照name的倒序排。

(3)select ROW_NUMBER() over(order by name desc) as zhong, * from Table_1 order by zhong desc

圖三? 代碼的最終排序結果是按照sql中的order by 而不是按照ROW_NUMBER()中 over的order by 排序的。

(4)使用ROW_NUMBER()函數可以查找指定范圍內的數據,實現分頁功能。

string sql = String.Format("select * from (select *,ROW_NUMBER() over(order by id) as row from Table_1 where name='{0}') t where row>={1} and row<{2} ",Name.ToString(),((pageIndex - 1) * pageSize).ToString(),((pageIndex) * pageSize).ToString());

把查詢出來的結果又按照序號排了一次序,然后根據索引和每頁的個數,就能夠查出每一次同步請求的分頁的數。

(5)不使用ROWER_NUMBER()也能夠實現查詢指定范圍的內容,使用Top來限定范圍(3個select)

string sql = "select id from (select top(2)id from (select top(5) id from Table_1 order by id asc) t order by id? desc) m order by id asc"

?注意:sql語句子查詢中的 order by 排序,子句和主句都要寫,若子句中不寫,主句中的排序會影響到子句。

轉載于:https://www.cnblogs.com/heluo/archive/2012/07/31/2617147.html

總結

以上是生活随笔為你收集整理的教你学会Sql中 ROW_NUMBER的用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。