zl程序教程

您现在的位置是:首页 >  数据库

当前栏目

sql查询记录数结果集某个区间内记录

SQL 查询 记录 结果 某个 区间
2023-06-13 09:14:41 时间
以查询前20到30条为例,主键名为id

方法一:先正查,再反查
selecttop10*from(selecttop30*fromtablenameorderbyidasc)Aorderbyiddesc

方法二:使用leftjoin
selecttop10A.*fromtablenameA
leftouterjoin(selecttop20*fromtablenameorderbyidasc)B
onA.id=B.id
whereB.idisnull
orderbyA.idasc

方法三:使用notexists
selecttop10*fromtablenameA
whereidnotexists
(selecttop20*fromtablenameBonA.id=B.id)

方法四:使用notin
selecttop10*fromtablename
whereidnotin
(selecttop20idfromtablenameorderbyidasc)
orderbyidasc

方法五:使用rank()
selectidfrom
(selectrank()over(orderbyidasc)rk,idfromtablename)T
whererkbetween20and30

中第五种方法看上去好像没有问题,查了下文档,当over()用于rank/row_number时,整型列不能描述一个列,所以会产生非预期的效果.待考虑下,有什么办法可以修改为想要的结果.