首页 新闻 搜索 专区 学院

一个简单的带条件查询的SQL分页存储过程

0
悬赏园豆:10 [已解决问题] 解决于 2017-04-18 14:13

试过有多种分页方法,但是都不太理想,有用Row_Number()分页的,但是一带查询条件,就不行了,现在就想要一个不是很复杂的分页存储过程,参数中我只需要传入pageIndex,pageSize,和其他查询条件,网上的那些存储过程,光看就看的眼花缭乱,有没有比较简单一点的??

sql
gyangjing的主页 gyangjing | 初学一级 | 园豆:11
提问于:2017-04-17 00:20
< >
分享
最佳答案
1

select * from (
select *,ROW_NUMBER() OVER (ORDER BY CreateTime desc) AS RowNumber from TABLE
where Disabled = 0 ) as t
where RowNumber between (pageIndex-1)*pageSize +1  and (pageIndex-1)*pageSize

简单的分页,

ORDER BY CreateTime desc 是根据条件排序;

里面的where 条件

收获园豆:10
胡子先生丶 | 菜鸟二级 |园豆:251 | 2017-04-17 15:41

这才是正解!!我已经用跟你类似的方法实现了,并且进一步封装了一下,写了一个通用的分页存储过程,语句跟你这个类似!

gyangjing | 园豆:11 (初学一级) | 2017-04-18 14:12
其他回答(3)
0

简单一点的那就看你传的参数了,查询条件过不过是多加判断了,你所说的眼花缭乱是你没下功夫自己试着去写,就查看别人现成的,关键是查看别人的你得去分析啊,一看内容多然后就觉得特别复杂了,这种学习方式不会得到很大的提高!

Jeffcky | 园豆:2563 (老鸟四级) | 2017-04-17 09:41
0

xi现在分页还啥存储过程

百度下 2012sql分页语法

吴瑞祥 | 园豆:28841 (高人七级) | 2017-04-17 10:23
-1

其实只要知道分页的规律就行了,也可以不用存储过程 ,不过涉及到子查询

传入2个参数    当前的页数,每页显示的数

select top  (每页显示的数) *  from student where  id

not in (select top (当前的页数-1) * 每页显示的数  id  from student )

and 条件......

下一次巅峰 | 园豆:18 (初学一级) | 2017-04-17 16:25

你这个方法是可以,但是前面的几页会很快,越到后面越慢,还是用row_number()要科学一些 只需要扫描一次表,而且做好索引也是很重要的,不然排序需要花很多时间.

支持(1) 反对(0) 小熊V5 | 园豆:182 (初学一级) | 2017-04-17 17:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册