加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

分页语句

发布时间:2020-12-12 15:21:01 所属栏目:MsSql教程 来源:网络整理
导读:分页语句 取出 sql 表中第 31 到 40 的记录(以自动增长 ID 为主键) sql server 方案 1 : ??? select top 10 * from t where id not in (select top 30 id from t order by id ) orde by id sql server 方案 2 : ??? select top 10 * from t where id in

分页语句

取出sql 表中第3140 的记录(以自动增长ID 为主键)

sql server 方案1

??? select top 10 * from t where id not in (select top 30 id from t order by id ) orde by id

sql server 方案2

??? select top 10 * from t where id in (select top 40 id from t order by id) order by id desc

?

mysql 方案:select * from t order by id limit 30,10

?

oracle 方案: select * from (select rownum r,* from t where r<=40) where r>30

?

-------------------- 待整理进去的内容 -------------------------------------

pageSize=20;

pageNo = 5;

?

1. 分页技术 1 (直接利用 sql 语句进行分页,效率最高和最推荐的)

?

mysql:sql = "select * from articles limit " + (pageNo-1)*pageSize + "," + pageSize;

oracle: sql = "select * from " +

??????????????????????????????????????????????????????? "(select rownum r,* from " +

?????????????????????????????????????????????????????????????? "(select * from articles order by postime desc)" +

??????????????????????????????????????????????????????? "where rownum<= " + pageNo*pageSize +") tmp " +

???????????????????????????????????????????????? "where r>" + (pageNo-1)*pageSize;

注释:第 7 行保证 rownum 的顺序是确定的,因为 oracle 的索引会造成 rownum 返回不同的值

简洋提示:没有 order by 时, rownum 按顺序输出,一旦有了 order by rownum 不按顺序输出了,这说明 rownum 是排序前的编号。如果对 order by 从句中的字段建立了索引,那么, rownum 也是按顺序输出的,因为这时候生成原始的查询结果集时会参照索引表的顺序来构建。

?

sqlserver:sql = "select top 10 * from id not id(select top " + (pageNo-1)*pageSize + "id from articles)"

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读