• <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>
  • 如何在SQL中對行進行動態編號

    發表于:2007-04-22來源:作者:點擊數: 標簽:sql何在編號動態進行
    如何在 SQL 中對行進行動態編號,加行號這個問題,在 數據庫 查詢中,是經典的問題。我把現在的方法整理一下,分享一下技巧吧。代碼基于pubs樣板數據庫。在SQL中,一般就這兩種方法: 1.使用臨時表 可以使用select into 創建臨時表,在第一列,加入Identify(

     如何在SQL中對行進行動態編號,加行號這個問題,在數據庫查詢中,是經典的問題。我把現在的方法整理一下,分享一下技巧吧。代碼基于pubs樣板數據庫。在SQL中,一般就這兩種方法:

      1.使用臨時表

      可以使用select into 創建臨時表,在第一列,加入Identify(int,1,1)作為行號,這樣在產生的臨時表中,結果集就有了行號.也是目前效率最高的方法。這種方法不能用于視圖

      代碼:

    set nocount on select IDentify(int,1,1) 'RowOrder',au_lname,au_fname into #tmp from authors select * frm #tmp drop table #tmp

      2.使用自連接

      不用臨時表,在SQL語句中,動態的進行排序.這種方法用到的連接是自連接,連接關系一般是大于。

      代碼:

    select rank=count(*), a1.au_lname, a1.au_fname from authors a1 inner join authors a2 on a1.au_lname + a1.au_fname >= a2.au_lname + a2.au_fname group by a1.au_lname, a1.au_fname order by count(*)

      運行結果:

    rank au_lname au_fname
    1 Bennet Abraham
    2 Blotchet-Halls Reginald
    3 Carson Cheryl
    4 DeFrance Michel
    5 del Castillo Innes
    6 Dull Ann
    7 Greene Morningstar
    ... ... ...

      缺點:

      1.使用自聯接,所以該方法不適用于處理大量行。它適用于處理幾百行。對于大型表,一定要使用索引以避免進行大范圍的搜索,或用第一種方法.

      2.不能正常處理重復值。當比較重復值時,會出現不連續的行編號。如果不希望出現這種現象,可以在電子表格中插入結果時隱藏排序列,而是使用電子表格編號,或用第一種方法

      優點:

      1.這些查詢可以用于視圖和結果格式設置中

      在結果集中插入了行號,現在就可以將結果集合緩存起來,然后使用DataView,加入過濾條件

    RowNum>PageIndex*PageSize And RowNum<=(PageIndex+1)*PageSize

      就能實現快速的分頁,而且不論你的頁面數據綁定控件是什么(DataList,DataGrid,還是Repeate都可以)。如果你使用的是DataGrid,那么建議不要使用這種技術。因為DataGrid的分頁效率和它差不多。

    原文轉自:http://www.kjueaiud.com

    老湿亚洲永久精品ww47香蕉图片_日韩欧美中文字幕北美法律_国产AV永久无码天堂影院_久久婷婷综合色丁香五月

  • <ruby id="5koa6"></ruby>
    <ruby id="5koa6"><option id="5koa6"><thead id="5koa6"></thead></option></ruby>

    <progress id="5koa6"></progress>

  • <strong id="5koa6"></strong>