教你学会Sql中 ROW_NUMBER的用法
生活随笔
收集整理的這篇文章主要介紹了
教你学会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分頁; (1) select * from Table_1
語法:select *,ROW_Number() over(order by 字段) as '新列名' from table
顧名思義:ROW_NUMBER() 為根絕條件查詢出來的數據添加一列(有序的一列,連續序號的1,2,3....),雖然說數據庫中的表的自增列的ID也是連續的,
但是根據篩選條件或者刪除行導致ID序號出現斷號,而ROW_NUMBER()這個方法恰恰可以生成一個新的一列(序號相連),最主要的應用就是SQL分頁; (1) select * 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的用法的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: Codeforces Round #13
- 下一篇: 1026: [SCOI2009]wind