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...