在项目新的接口中要求可以分页查询,百思不得其解.

直接查询所有数据后,到前端需要的时候进行切割调用不就可以吗?

后来想了想,如果数据量很大,这样的方法是在太繁琐.把所有的数据都查询出来确实不是好的办法.

于是百度了一下,找到了合适的分页查询的方法

通过:

limit ××× offset ×××

比如,在一个数据表中,一共有400条数据.我想每一次查询10条显示到前端,该如何设计SQL语句呢?

page = x;	//其中,x为从前端获取的当前的页数,如1.2.3...
limit = 10;	//因为每次显示10条数据,所以我们就给limit赋值为10
offset = (x-1) * limit;
SQL = string.Format("select * from sjb limit {0} offset {1}",limit,offset)

这样构造SQL语句,我们就可以通过前端传输过来的当前页面数,去查询所需要的数据.

原理:

在limit后面,我们跟上我们每一次想查询的数据量.
比如:我们想查询5行,我们就可以写"litmit 5"

而在offset后面,用大白话来说,就是忽略掉包括×××之前所有的数据,从第×××+1条数据开始查询 比如,我们相查询第11-20条数据
我们就可以写: limit 10 offset 10




在上面的例子中,我们每次查询10行查询400条数据
首先可以确定limit后面的数据是10
然后确定每次忽略的数据量
当我们返回页数为1时候,忽略前0 * 10条数据
当我们返回页数为2时候,忽略前1 * 10条数据
当我们返回页数为3时候,忽略前2 * 10条数据
当我们返回页数为4时候,忽略前3 * 10条数据
.
.
.
.

当我们返回页数为n时候,忽略前(n-1) * 10条数据
由此构造出offset的值: (x-1) * limit
进而构造出SQL语句