MySQL索引查询limit offset及排序order by用法
引言
“ 这是mysql系列笔记的第九篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或者个人知识点查阅。”
select 语句获取数据我们可以通过 where 语句来限制条件。
但是如果限制条件之后还是很多数据,比如说 一万条,但有时候我们只是想看看数据的基本情况,不需要一万条数据,看不完,而且这一万条数据返回到客户端的时间也很长,没必要,那么这就需要我们使用 limit 和 offset 来限制返回的数量。
使用 limit 和 offset 来限制返回的数量
1、limit
limit 限制数量,后面跟一个整数 n,表示只返回符合条件的 n 条数据
比如说返回 book 表的前 5 条数据:
select*frombooklimit5;
2、offset
offset 是偏移量,和 limit 连用,比如说 limit 3 offset 5
表示舍弃前5条数据, 然后返回之后的 3条数据
可以理解成分页的用法,比如说每页数量为 10 条,然后我们分别获区第1、2、3、4页的数据:
select*frombooklimit10offset0;
select*frombooklimit10offset10;
select*frombooklimit10offset20;
select*frombooklimit10offset30;
注意: limit 和 offset 语句都放在查询语句的最后面。
MySQL 查询语句排序的关键字是 order by。
order by 的如下几个用法
order by 的正序、逆序
多个字段排序
按照中文排序
1、order by 的升序、倒序
order by 的语法是 order by field_name asc/desc
,asc 是升序,desc 是倒序
比如根据 book_name 字段按照升序排列返回:
select*frombookorderbybook_nameasc;
其实,asc 是 order by 的默认排序方式,所以如果是升序,asc 是可以省略的。
select*frombookorderbybook_name;
如果是倒序就是用 desc:
select*frombookorderbybook_namedesc;
2、多个字段排序
如果是多个字段分别倒序、升序,通过逗号分隔连用即可:
select*frombookorderbybook_namedesc,authorasc;
3、按照中文排序
现在插入几条带中文的数据:
insertintobook(book_name,author)values('中文测试','作者1'),('这是测试','作者2'),('测试','作者3');
直接使用排序的逻辑会发现排序是不对的,因为 '测试' 的拼音是在 'ceshi',但是排序却并没有在其他两条数据前面:
select*frombookorderbybook_name;
那么这就需要用到另一个用法:
select*frombookorderbyconvert(book_nameusinggbk);
其语法是 convert(field_name using gbk)
,convert 函数里是字段名,然后 using gbk 表示转化成 gbk 的格式来排序。
以上就是MySQL限制数据返回条数limit offset及排序order by用法的详细内容,更多关于MySQL limit offset order by的资料请关注我们其它相关文章!
免责声明:
① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。
② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341