`
liyixing1
  • 浏览: 961786 次
  • 性别: Icon_minigender_1
  • 来自: 江西上饶
社区版块
存档分类
最新评论

分页(mysql,其他数据可使用类似方式)

阅读更多
作者:李义星,原创,转载请注明作者!

方法一:

表数据如图




假设两行是一页

取第一页直接查出(limit 2)

非第一页(假设第3页),那么先取出1-2页的数据

SELECT OP.PRODUCT_ID FROM openb2c.OPEN_PRODUCT OP
        WHERE BRAND_NAME='001'
        ORDER BY OP.PRODUCT_ID LIMIT 4

这个时候可以直接用NOT IN (SELECT OP.PRODUCT_ID FROM openb2c.OPEN_PRODUCT OP
        WHERE BRAND_NAME='001'
        ORDER BY OP.PRODUCT_ID LIMIT 4 )方式直接分页,但是这样会很慢,我们加入反排序:

SELECT OP.PRODUCT_ID FROM
    (
        #  取前N行记录
        SELECT OP.PRODUCT_ID FROM openb2c.OPEN_PRODUCT OP
        WHERE BRAND_NAME='001'
        ORDER BY OP.PRODUCT_ID LIMIT 4
    ) OP
    ORDER BY OP.PRODUCT_ID DESC
    LIMIT 1

取出反排序后第一条数据,实际上对应的是图中的第四条数据

然后

大于运算(>)就可以取第四条以后的数据,并且设置了LIMIT,只取2条,效率比IN高出很多!



完整SQL:



#前N行中最大的哪行下一行开始取,读取数量为分页大小
SELECT * FROM openb2c.OPEN_PRODUCT OP
WHERE OP.PRODUCT_ID > (
  #前N行记录倒叙,并且只取第一条
  SELECT OP.PRODUCT_ID FROM
    (
        #  取前N行记录
        SELECT OP.PRODUCT_ID FROM openb2c.OPEN_PRODUCT OP
        WHERE BRAND_NAME='001'
        ORDER BY OP.PRODUCT_ID LIMIT 57001
    ) OP
    ORDER BY OP.PRODUCT_ID DESC
    LIMIT 1
) AND
OP.BRAND_NAME = '001'
ORDER BY OP.PRODUCT_ID
LIMIT 20

然而这种方式只可在主键排序才能进行。所以介绍第二种方法



方法二:

//当有要求排序时

SELECT * FROM XXX ORDER BY XX LIMIT (页数 + 1)*页大小

然后从排序后的数据进行反排序,取出page大小的数据



SELECT * FROM(

SELECT * FROM  XXX ORDER BY XX LIMIT (页数 + 1)*页大小

) order by 反排序 limit 页大小

然后在按要求排序

SELECT * FROM

SELECT * FROM(

SELECT * FROM  XXX ORDER BY XX LIMIT (页数 + 1)*页大小

) order by XX (原来是升序就降序(反排序) limit pagesize数据量

) ORDER BY XX

和第一种方法排序的效率比较待测试
  • 大小: 23.1 KB
分享到:
评论

相关推荐

    MySql + JDBC +EasyUI DataGrid实现数据表格的展示和分页

    本项目通过集成MySQL数据库、Java的JDBC技术以及前端的EasyUI框架,实现了数据表格的展示和分页功能,这对于Web应用来说是常见的需求。下面将详细讲解这些技术的使用及其相互配合。 **1. MySQL数据库** MySQL是一款...

    mySql与oracle分页技术

    Oracle 12c引入了`FETCH NEXT`和`OFFSET`,这使得Oracle的分页语法与MySQL和SQL Server等其他数据库系统更加兼容: ```sql SELECT * FROM your_table OFFSET 10 ROWS FETCH NEXT 10 ROWS ONLY; ``` 这种方法避免了...

    Oracle,SQl,MySql实现分页查询

    Oracle 不支持 `SELECT TOP` 语法,因此需要采用其他方式来实现类似的功能。可以使用 `ROWNUM` 来限制返回的行数。 ```sql SELECT * FROM ( SELECT A.*, ROWNUM RN FROM ( SELECT * FROM TABLE_NAME ) A WHERE ...

    使用VBA将excel的数据存放到mysql数据库里面,并将内容显示到sheet数据表

    为了将数据库中的数据读回并显示在Sheet上,我们可以使用类似的方法创建一个新子程序: ```vba Sub DisplayFromMySQL() Dim conn As New ADODB.Connection Dim sql As String Dim rs As New ADODB.Recordset ...

    MFC连接MYSQL实现分页

    在本文中,我们将深入探讨如何使用MFC(Microsoft Foundation Classes)框架连接到MySQL...尽管两者都是连接数据库的方法,但原理类似,你可以参考其中的代码结构和逻辑,将其转换为使用MySQL Connector/C++的方式。

    易语言MYSQL分页查询

    在IT行业中,数据库管理和数据检索是至关重要的环节。...通过以上步骤,开发者可以在易语言环境下构建一个功能完善的MySQL数据库分页查询系统,满足用户在大量数据中快速、高效地查找和浏览信息的需求。

    oracle mysql sqlserver分页

    在数据库管理领域,分页查询是一项非常实用的功能,它能够帮助开发者有效地管理和展示大量数据,尤其是在Web应用中。本文将详细介绍Oracle、MySQL以及SQL Server三种主流数据库系统中的分页技术,包括它们各自的实现...

    springMVC实现分页代码Mysql版本的

    在IT行业中,SpringMVC和MySQL是两个非常重要的技术组件,它们经常被用来构建高效、可扩展的企业级Web应用程序。SpringMVC作为Spring框架的一部分,主要用于处理HTTP请求和响应,而MySQL则是一种广泛使用的开源关系...

    asp分页,asp分页仿百度,asp分页大全

    1. 传统SQL分页:直接在SQL查询中使用LIMIT和OFFSET子句(如MySQL)或者TOP和ROW_NUMBER()函数(如SQL Server)来获取指定页的数据。 2. 存储过程分页:在数据库层面编写存储过程,将分页逻辑封装起来,更利于性能...

    易语言mysql分页

    通过理解这些知识点,开发者可以利用易语言和MySQL实现高效、友好的数据浏览功能,尤其对于那些数据量庞大的应用来说,分页是必不可少的。同时,通过学习和分析提供的源码,初学者可以进一步提升在数据库操作和程序...

    分页_分页实现数据表_源码

    在IT领域,分页是一种非常常见的数据展示技术,特别是在网页应用和数据库操作中。它用于将大量数据分割成较小、更易管理的部分,通常每部分称为一页。这使得用户能够逐步浏览信息,而不是一次性加载所有内容,提高了...

    一个关于基于ssm,mysql(也含oracle方式)实现的分页查询.rar

    这个压缩包文件“一个关于基于ssm,mysql(也含oracle方式)实现的分页查询.rar”主要涉及到如何在SSM环境下,使用MySQL和Oracle数据库进行分页查询的实践案例。 首先,Spring作为核心容器,负责管理对象的生命周期...

    nodeJS与MySQL实现分页数据以及倒序数据

    对于其他框架,如Express,处理方式类似,只是在处理响应时可能不需要异步封装,可以直接在回调函数中设置响应体。 需要注意的是,为了优化性能,通常我们会创建索引来加速排序和分页操作。对于`id`字段,如果尚未...

    ajax+jso+mybatis+mysql模仿百度简单分页案例

    在本案例中,我们主要探讨如何使用Ajax、JSON、MyBatis和MySQL来实现一个类似于百度的简单分页功能。这个教程特别适合那些希望提升自己技能的程序员,通过阅读源代码和注释,你可以深入理解这些技术的结合使用。下面...

    基于PHP MySQL的Web分页显示技术.pdf

    4. 显示数据:使用`mysql_fetch_object()`或其他类似函数遍历LIMIT后的结果集,显示当前页的数据。 以网上书店的图书查询为例,用户可以输入关键词进行搜索,服务器端的PHP脚本接收请求,构造SQL查询语句,结合...

    分页语句dao里面的

    2. 分页查询实现方式:常见的分页查询实现方式包括:使用SQL语句中的LIMIT和OFFSET子句(适用于MySQL、PostgreSQL等),使用ROW_NUMBER()函数(适用于SQL Server、Oracle等),或者使用其他数据库特有的分页解决方案...

    asp 数字分页 仿百度分页 仿谷歌分页

    `LIMIT`和`OFFSET`是MySQL中的语法,如果是使用SQL Server或Oracle等数据库,需要转换成相应的分页方式。 实现分页效果时,我们需要计算总页数,这涉及到对总记录数和每页记录数的除法运算。同时,为了方便用户跳转...

    DataGridView分页控件

    1. **数据获取**:从数据库或其他数据源获取数据,并将其加载到`DataTable`。 2. **初始化分页**:根据数据量设定每页显示的记录数,计算总页数。 3. **数据绑定**:使用`SetControl`函数,将`DataTable`的数据绑定...

    基于PHP+MySQL实现分页技术1

    在基于PHP+MySQL实现分页技术的过程中,我们... - 在实际应用中,应考虑使用配置文件来管理数据库连接信息,提高代码可维护性。 通过以上步骤,我们可以实现一个基本的PHP+MySQL分页功能,有效地管理和展示大量数据。

    分页的例子(类似google)

    例如,使用`LIMIT`和`OFFSET`关键词可以在MySQL中实现分页。在大型数据集的情况下,优化分页性能也十分重要,如使用索引、避免全表扫描等策略。 总的来说,“分页的例子(类似google)”是一个综合了前端交互、后端...

Global site tag (gtag.js) - Google Analytics