Sql server中使用Row_Number函數)

來源:互聯網
上載者:User
  在SQL Server2005中有一個ROW_NUMBER函數,它將針對SELECT語句返回的每一行,從1開始編號,賦予其連續的編號。在查詢時應用了一個排序標準後,只有通過編號才能夠保證其順序是一致的,當使用ROW_NUMBER函數時,也需要專門一列用於預先排序以便於進行編號。
    以北風資料庫為例,代碼如下: 

SELECT ROW_NUMBER() OVER (ORDER BY ProductID) AS ROW,ProductName FROM Products

啟動並執行結果如下:
ROW                   ProductName                              
--------------------- ----------------------------------------
1                     Chai                                     
2                     Chang                                    
3                     Aniseed Syrup                            
4                     Chef Anton's Cajun Seasoning             
5                     Chef Anton's Gumbo Mix                   
6                     Grandma's Boysenberry Spread             
    如果要取出表中2-5個產品名稱,把上面的查詢變為子查詢,並在主查詢的WHERE子句過濾查詢的結果,上面的子查詢當作一個獨立的表,以在主查詢使用(在子查詢後面的AS關鍵字,是用來給這個虛擬“表”指定一個建立的名稱)SELECT ROW,ProductName
FROM(SELECT ROW_NUMBER() OVER (ORDER BY ProductID) AS ROW,ProductName FROM Products)
AS ProductsWithRowNumbers  WHERE Row >=2 AND Row<=5啟動並執行結果如下:
  ROW                   ProductName                              
--------------------- ----------------------------------------
2                     Chang                                    
3                     Aniseed Syrup                            
4                     Chef Anton's Cajun Seasoning             
5                     Chef Anton's Gumbo Mix                   
    使用表變數
    如果需要對取回的資料集進行進一步操作,就可能需要儲存它,儲存在一個TABEL變數中,在一個預存程序中表變數常用來存放臨時資料。TABLE表變數可以作為正常表來使用。
    以北風資料庫為例,代碼如下:  CREATE PROCEDURE MyTable
AS
DECLARE @MyProducts table
(MyROW int,
 MyProductID int,
 MyProductName varchar(40))
BEGIN
    INSERT INTO @MyProducts
SELECT ROW_NUMBER() OVER (ORDER BY ProductID) AS ROW,ProductID,ProductName FROM Products
SELECT MyROW,MyProductName FROM @MyProducts WHERE MyROW >=2 AND MyROW<=5
END
GO啟動並執行結果如下:
MyROW       MyProductName                            
----------- ----------------------------------------
2           Chang                                    
3           Aniseed Syrup                            
4           Chef Anton's Cajun Seasoning             
5           Chef Anton's Gumbo Mix        使用暫存資料表
    如果需要對取回的資料集進行進一步操作,就可能需要儲存它,儲存在暫存資料表中,在一個預存程序中暫存資料表常用來存放臨時資料。暫存資料表可以作為正常表來使用。
    以北風資料庫為例,代碼如下:CREATE PROCEDURE [dbo].[MyTable] 
AS
CREATE TABLE #MyProducts 
(MyROW int,
 MyProductID int,
 MyProductName varchar(40)) 
BEGIN
    INSERT INTO #MyProducts
SELECT ROW_NUMBER() OVER (ORDER BY ProductID) AS ROW,ProductID,ProductName FROM Products
SELECT MyROW,MyProductName FROM #MyProducts WHERE MyROW >=2 AND MyROW<=5
END   啟動並執行結果如下:
MyROW       MyProductName                            
----------- ----------------------------------------
2           Chang                                    
3           Aniseed Syrup                            
4           Chef Anton's Cajun Seasoning             
5           Chef Anton's Gumbo Mix 
相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.