日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > 数据库 >内容正文

数据库

SQL 分页查询语句大全即(查找第N到M条记录的方法)

發布時間:2023/12/9 数据库 25 豆豆
生活随笔 收集整理的這篇文章主要介紹了 SQL 分页查询语句大全即(查找第N到M条记录的方法) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

SQL 分頁查詢語句大全即(查找第N到M條記錄的方法)

第一種方法,我的原創方法

row=2 表示分頁行數

page=1 表示頁碼

getnum=row*page

select * from? (select top?row * from (select top?getnum * from Newslist? order by id desc) order by id asc) order by id desc

?

SQL查找第n條記錄的方法: select top?1 * from table where id not in (select top n-1 id from table)

?

例如:select top 1 * from Evaluation where id not in (select top 0 id from Evaluation ?where SortPath='0,73,87,'? order by Sort asc) and?? SortPath='0,73,87,'? order by Sort asc
SQL查找第n條開始的m條記錄的方法: select top?m * from table where id not in (select top n-1 id from table) temptable0)
(注:表中必須有一個唯一值字段才可適用此方法。)

1?--從Table?表中取出第?m?條到第?n?條的記錄:(Not?In?版本)?2??3?SELECT?TOP?n-m+1?*? ?4?FROM?Table? ?5?WHERE?(id?NOT?IN?(SELECT?TOP?m-1?id?FROM?Table?))??

?6??7??8?--從TABLE表中取出第m到n條記錄?(Exists版本)?9?10?SELECT?TOP?n-m+1?*?FROM?TABLE?AS?a?WHERE?Not?Exists11?(Select?*?From?(Select?Top?m-1?*?From?TABLE?order?by?id)?b?Where?b.id=a.id?)? 12?Order?by?id 13?14?15?--m為上標,n為下標,例如取出第8到12條記錄,m=8,n=12,Table為表名16?17?Select?Top?n-m+1?*?From?Table? 18?Where?Id>(Select?Max(Id)?From? 19?(Select?Top?m-1?Id?From?Table?Order?By?Id?Asc)?Temp)? 20?Order?By?Id?Asc??


我一直以為ACCESS的SQL語句與SQL Server差不多,當時也使用 Select top n在ACCESS測試過,都是成功的,但昨天突然發現ACCESS中有個問題: ? 如果在查詢TOP語句的后面使用Order by,而且Order by字段中有重復值的話,那么這個TOP很可能會失效, 會返回所有記錄 比如:

?Select?top?5?from?News?order?by?CreateDate

如果CreateDate中有重復值,那么很有可能會顯示出所有的記錄來,此TOP功能會失效的 但如果CreateDate中無重復值,那么TOP功能還是有效的
因此,在ACCESS中使用TOP功能要注意一下order by的字段是否會有重復值,如果象CreateDate是"年-月-日時:分:秒"的,那基本上問題不大的。 但為了保險起見,我們也可以采用“加入主鍵”的方式:

?Select?top?5?from?News?order?by?CreateDate?desc,id?desc

用主鍵作“不可能重復”的保障就可以防止此問題出現了!!

--orderid?1:1028?10:10257?20:10267?30:10277 --查詢第20-30條select?top?10?*?from?Orders?where?OrderID>? (select?max(OrderID)?from? ??(select?top?20?OrderID?from?Orders?order?by?OrderID?ASC?)?t0 ) order?by?OrderID?ASC

在網上找到一個相關的解釋: JET?SQL不是?T-SQL語句。 jet?sql?會返回重復值,也就是說,一個表中如果?ORDER?BY?的字段都是?0?,一共有100條記錄,即使你用SELECT?TOP?1?來返回記錄,也同樣返回100條記錄,因為?JET?DB?無從在這100條記錄里面判斷先后次序,只能返回100條。要解決此問題可以在后面加入一個主鍵字段

轉載于:https://www.cnblogs.com/bulemaple/articles/2827716.html

總結

以上是生活随笔為你收集整理的SQL 分页查询语句大全即(查找第N到M条记录的方法)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。