為查詢結果集新增行序號

2021-04-16 18:00:00 字數 2210 閱讀 9734

sql server2005為我們引入了乙個row_number函式。你是否曾經需要為你的查詢結果集做行序號?你有時會發現能夠為行做序號是一件很有用的事情。從前,你不得不作棘手的事,像建立乙個有序號列的臨時表,然後把你的select結果插入到這個臨時表中。現在,用row_number函式,你就可以獲得新增在你的結果集的增加列中的行序號。為了獲得行序號,你只要簡單的將row_number函式作為一列新增進你的select語句中。你還必須新增over語句以便告訴sql server你希望怎樣新增行序號。

舉個實際應用例子:

alter proc getpage(

@pagesize    int =10,              --頁數大小

@pageindex   int =6,               --頁碼

@totalrows   int =1 output,   --總行數

@totalpages int =1 output,   --總頁數

@name        varchar(100) = 'sys', --查詢條件1

@xtype       varchar(10) = 's'     --查詢條件2)as

/**功能描述:根據查詢條件分頁輸出

*引數說明:將查詢條件分開作為每個條件單獨的引數傳入,如:查詢條件1、查詢條件2

* 不用將整個where條件作為乙個引數傳入,這樣的話用動態sql,失去了proc預編譯的意義,其二,**不好維護

*說明:**複雜的話建議使用temptable,注意order by和where中的索引的正確建立;每個查詢建立各自的儲存過程

*/begin

if @pageindex = 0 return;

select @totalrows = count(1) from sysobjects

where name like '%'+@name+'%' 

and 1=(case when isnull(@xtype,'')='' then 1 when isnull(@xtype,'')<>'' and xtype = @xtype then 1 else  2  end )

set @totalpages = (@totalrows-1)/@pagesize +1

if @pageindex > @totalpages return

if @pageindex =1

select top (@pagesize) id,name from sysobjects where name  like '%'+@name+'%' 

and 1=(case when isnull(@xtype,'')='' then 1 when isnull(@xtype,'')<>'' and xtype = @xtype then 1 else 2 end)order by name

else if @pageindex = @totalpages

select * from (select top (@totalrows - @pagesize*(@pageindex-1)) id,name from sysobjects 

where name like  '%'+@name+'%' 

and 1=(case when isnull(@xtype,'')='' then 1 when isnull(@xtype,'')<>'' and xtype = @xtype then 1 else 2 end )order by name desc) as a order by name

else

select * from (select top (@pagesize*@pageindex) id,name ,r

ow_number() over (order by  name) as rowno  from sysobjects

where name like '%'+@name+'%' and 1=(case when isnull(@xtype,'')='' then 1 when isnull(@xtype,'')<>'' and xtype = @xtype then 1 else 2 end ) order by name ) as a

where a.rowno between (@pagesize*@pageindex)-@pagesize+1 and (@pagesize*@pageindex)

end

hive SQL查詢結果新增行號

用視窗函式可以解決這個問題 例 select row number over order by user id desc tab.from dws user visit month1 as tab limit 20 結果 其實要是單純想加乙個自增的行號,沒有順序要去的話 over 裡面可以空著 例 ...

Mysql 給查詢出的結果集新增自增序號

模板如下 select rownum rownum 1 自增序號別名,結果集欄位 from 結果集,select rownum 0 as 任意別名示例如下 select rownum rownum 1 as rownum,a.from select u.from users u order by u...

MySQL 對查詢的結果集新增自增序號,兩種寫法

在mysql中,當我們所要查詢的結果集沒有id欄位時,為方便前台展示等業務需求,需要新增乙個自增的序號字段 id 語法如下 select i i 1 別名1,表字段資訊 from 表名,select i 0 as 別名2 示例,同時結合分頁使用 寫法1 set i 0 select i i 1 as...