SQL行號排序和分頁(SQL查詢中插入行號 自定義分頁
導(dǎo)讀:1建站知識如何在SQL中對行進(jìn)行動態(tài)編號,加行號這個(gè)問題,在數(shù)據(jù)庫查詢中,是經(jīng)典的問題建設(shè)網(wǎng)站高端網(wǎng)站建設(shè)。
(一)行號顯示和排序 1.SQL Server的行號 A.SQL 2000使用identity(int,1,1)和臨時(shí)表,可以顯示行號 SELECT identity(int,1,1) AS ROWNUM, [DataID] INTO #1 FROM DATAS order by DataID; SELECT * FROM #1 B.SQL 2005提供一個(gè)很好用的函數(shù)row_number(), 可以直接用來顯示行號,當(dāng)然也可以使用SQL 2000的identity SELECT row_number()over(ORDER BY DataID) AS ROWNUM, [DataID] FROM DATAS; 這里如果添加排序功能,則先排序再添加行號 2.ORACLE的行號顯示 使用ROWNUM SELECT ROWNUM, [DataID] FROM DATAS order by DataID 注意:先加行號再排序,如果想排序好再加行號就要使用子查詢 3.取前n條數(shù)據(jù) A.SQL版 select top n [DataID] from DATAS B.ORACLE版 SELECT [DataID] FROM DATAS where ROWNUM<高端網(wǎng)站建設(shè);=n 其中,n>=1 ORACLE的ROWNUM不能應(yīng)用于大于,只能 ROWNUM= 1, 或者<= 大于1 的自然數(shù) (二)SQL分頁的幾種方式 以每頁10條數(shù)據(jù)為例,查詢第三頁數(shù)據(jù),即21-30這些記錄 1.分頁方案一:(利用Not In和SELECT TOP分頁) 語句形式:
復(fù)制代碼 代碼如下:
SELECT TOP 10 * FROM DATAS WHERE DataID NOT IN (SELECT TOP 20 DataID FROM DATAS ORDER BY DataID) ORDER BY DataID
2.分頁方案二:(利用ID大于多少和SELECT TOP分頁) 語句形式:復(fù)制代碼 代碼如下:
SELECT TOP 10 * FROM DATAS WHERE ID > (SELECT MAX(DataID) FROM (SELECT TOP 20 DataID FROM DATAS ORDER BY DataID) AS T) ORDER BY DataID
3.分頁方案三復(fù)制代碼 代碼如下:
select top 10 DataID from (SELECT top 30 [DataID] FROM DATAS order by dataid desc) A ORDER BY DataID
4.分頁方案四:(利用SQL的游標(biāo)存儲過程分頁)復(fù)制代碼 代碼如下:
create procedure SqlPager @sql nvarchar(8000), --查詢字符串 @curpage int, --第N頁 @pagesize int --每頁行數(shù) as set nocount on declare @P int, --P是游標(biāo)的id @rowcount int exec sp_cursoropen @P output,@sql,@scrollopt=1,@ccopt=1, @rowcount=@rowcount output select ceiling(1.0*@rowcount/@pagesize) as 總頁數(shù),@rowcount as 總行數(shù),@curpage as 當(dāng)前頁 set @curpage=(@curpage-1)*@pagesize+1 exec sp_cursorfetch @P,16,@curpage,@pagesize exec sp_cursorclose @P set nocount off
方法整理如下: 代碼基于pubs樣板數(shù)據(jù)庫 在SQL中,一般就這兩種方法. 1.使用臨時(shí)表 可以使用select into 創(chuàng)建臨時(shí)表,在第一列,加入Identify(int,1,1)作為行號, 這樣在產(chǎn)生的臨時(shí)表中,結(jié)果集就有了行號.也是目前效率最高的方法. 這種方法不能用于視圖復(fù)制代碼 代碼如下:
set nocount on select IDentify(int,1,1) 'RowOrder',au_lname,au_fname into #tmp from authors select * frm #tmp drop table #tmp
2.使用自連接 不用臨時(shí)表,在SQL語句中,動態(tài)的進(jìn)行排序.這種方法用到的連接是自連接,連接關(guān)系一般是 大于,聲明: 本文由我的SEOUC技術(shù)文章主頁發(fā)布于:2023-05-23 ,文章SQL行號排序和分頁(SQL查詢中插入行號 自定義分頁主要講述行號,分頁,SQL網(wǎng)站建設(shè)源碼以及服務(wù)器配置搭建相關(guān)技術(shù)文章。轉(zhuǎn)載請保留鏈接: http://www.bifwcx.com/article/web_5944.html
為你推薦與SQL行號排序和分頁(SQL查詢中插入行號 自定義分頁相關(guān)的文章
-
通王TWCMS 2.0.3網(wǎng)站模板程序下載
(126)人喜歡 2024-01-15 -
Windows官方原版在哪里下載
(175)人喜歡 2024-01-15 -
WordPress網(wǎng)站模板發(fā)帖標(biāo)題顏色設(shè)置
(131)人喜歡 2024-01-07 -
修改discuz論壇帖子標(biāo)題80字符的長度限制
(249)人喜歡 2024-01-07 -
wordpress程序調(diào)用不帶超鏈接的Tag標(biāo)簽
(234)人喜歡 2024-01-05 -
網(wǎng)站在不同時(shí)期需調(diào)整內(nèi)容更新的方向
(112)人喜歡 2023-08-12