MySQL怎样使用limit获取全部数据

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL怎样使用limit获取全部数据相关的知识,希望对你有一定的参考价值。

mysql数据库limit分页示例

1.select * from persons limit  A,  B;

解释:

A,查询起点

B,需要的行数

2.示例:

select * from persons limit 0 , 4;

解释:

起点位置为0,开始查询,返回4条数据。

select * from persons limit 4 , 4;

解释:

起点为4 ,开始查询,返回4天数据。

3.特殊:

select * from persons limit 10;

意思是,起点为0,开始查询,返回10条记录。

与 select * from persons limit 0,10;  是等价的。

4.按规则排序的同时,进行分页:

select * from persons

order by lastname

limit 0,10;

参考技术A 可以获取所有数据的条数,但是不能获取所有数据的信息
例如:
select sql_calc_found_rows * from user_info limit 0,10;
SELECT FOUND_ROWS() num;

同时执行这个两句sql,第二句是获取没有limit的所有数据条数本回答被提问者和网友采纳
参考技术B 查出的数据总记录数便是limit后的最大值,假如List<M> list = new ArrayList<M>(数据查询)
int n = list.size 的值,即: select * from xxx 如果有做分页的需求,则是使用先查询总数
再使用分页
即select * from xxx limit m,n
参考技术C 不用limit 就直接查到全部数据了啊? 你想实现啥呢

MyBatis怎样实现MySQL动态分页

一、mysql 使用limit 子句来实现数据库的物理分页,limit 子句接受 一个或两个参数,第一个参数指定第一个返回记录行的偏移量,第二个参数指定返回记录行的最大数量。在mybatis 中,只需要在相 应的查询语句后,加上limit 子句,即可实现物理分页。如下,以 一个只有字段id,name,age 的表为例。该配置会根据传入的 hashmap,如果含有键start 和键end,那么即通过mybatis 强大的 动态sql,生成含有mysql 分页的sql语句。 select * from users limit #start,#end

二、mybaits 简介
mybatis,前称ibatis,后改名为mybatis,截止本文成文,最新 版本是3.0.6。它和hibernate 是java世界使用最多的两种orm 框 架。hibernate 理念最为先进,完全实现面向对象的数据库编程,不需要掌握sql 语句,即可实现数据库操作,能够节省开发人员编 写大量sql语句的时间。但是,hibernate 在处理多表关联时,可 能会出现n+1 问题,性能会有较大影响,要解决性能问题,需要较 深的hibernate 知识和项目经验。mybatis 需要自己写sql 语句, 开发效率不如hibernate,很难做到底层多数据库的通用。但对程 序员来说有更高的可控性,可以更容易的对sql 语句进行优化,提 高效率。
在开发中直接使用jdbc 一个非常普遍的问题就是动态sql。如果 参数值、参数本身和数据列都是动态sql,通常的解决方法就是写很多if-else 条件语句和字符串连接。而mybatis 通过ognl 提供 了一套非常清晰的方法来解决动态sql 的问题。
参考技术A 第一种:Select * from user limit #p1,#p2-1
用这种方式是不行的,因为在MySQL中limit后面是不允许接表达式的;

在网上查了下MySQL还有一种动态分页,用MyBatis试了下报语法错误,直接在MySQL中运行是可以的,如下:
<select id="findUsers" resultType="sun.bean.dome.entity.User" statementType="PREPARED">
PREPARE PAGE FROM 'SELECT * FROM USER LIMIT ?,?';
SET @START=1;
SET @SIZE=3+1;
EXECUTE PAGE USING @START,@SIZE;
</select>

其实只想Limit后面的分页参数,是根据传递过来的参数动态运算出来的,求助~!
(数据库迁移Oracle到MySQL,所需分页参数不同)
参考技术B 1、亲Mybatis是自己写Sql语句啊,和Hibernate不一样。
2、如何知道上面的,你还要知道MySql有一个分页语句叫limit,如:limit(1,10);前面一个参数是起始未知,后面一个是查询多少个。
3、Oracle的分页方法是嵌套子查询,需要用到rownum这个属性
Sql Server是Top。

分页例子:
Oracle select * from (select emp.*,rownum rn from emp where rownum<9) where rn>3;
MySql select * from emp limit startIndex,maxNum本回答被提问者和网友采纳
参考技术C 里面有现成的方法,调用就好

以上是关于MySQL怎样使用limit获取全部数据的主要内容,如果未能解决你的问题,请参考以下文章

PHP MySQL数据分页

mysql中怎样把一个表的所有指定字符全部替换成另外的字符?

MySQL如何使用SQL语句获取表结构和获取全部表名

MySQL如何使用SQL语句获取表结构和获取全部表名

PageHelper分页插件及通用分页js

物理分页和逻辑分页