分页目的:减少一次数据的处理量。
一、语法格式(limit)
语法格式:
SELECT * FROM table LIMIT startindex,pagesize;
startindex:表示起始数据的行数(MySQL中的第一条数据下标index = 0,类似数组)
pagesize:展示的数据数量
详细版
select 5...字段 ...
from 1... 表名...
where 2...条件...
group by 3...分组字段...
having 4...二次过滤...
order by 6...排序...
limit start, size 7...分页...
因此可以将所有的查询结果当做一个字符串,而limit就相当于从这个字符串中快速截取指定的数据。
二、实例
1、接口List<User> getUserByLimit(Map<String, Integer> map);
2、执行类:HashMap<String, Integer> map = new HashMap<String, Integer>();map.put("startIndex",1);map.put("pageSize",2);List<User> userList = userMapper.getUserByLimit(map);for (User user : userList) {System.out.println(user);}sqlSession.close();
3、sql映射:
<select id="getUserByLimit" parameterType="map" resultType="user">select * from tb_user limit #{startIndex},#{pageSize}</select>
三、作用:
1、数据分页展示
2、查询第k名
对于查询最大、最小的时候,MySQL聚合函数解决、但是可以思考一下查询第k名(升序、逆序)时聚合函数似乎显得力不从心了,这时候可以使用order by 排序 + limit 进行一下挑选。
查询某个字段第k名的数据。注意是k-1(从0开始!)
select * from 表名 order by 字段 desc/asc limit k-1, 1
力扣176(第二高的薪水)
select (select distinct Salary from Employee order by Salary desc limit 1,1)
SecondHighestSalary