MySQL索引查询limit offset及排序order by用法

 更新时间:2023年05月19日 11:09:55   作者:Hunter后端  
这篇文章主要介绍了MySQL限制数据返回条数limit offset及排序order by用法,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

引言

 这是MySQL系列笔记的第九篇,文章内容均为本人通过实践及查阅资料相关整理所得,可用作新手入门指南,或者个人知识点查阅。

select 语句获取数据我们可以通过 where 语句来限制条件。

但是如果限制条件之后还是很多数据,比如说 一万条,但有时候我们只是想看看数据的基本情况,不需要一万条数据,看不完,而且这一万条数据返回到客户端的时间也很长,没必要,那么这就需要我们使用 limit 和 offset 来限制返回的数量。

使用 limit 和 offset 来限制返回的数量

1、limit

limit 限制数量,后面跟一个整数 n,表示只返回符合条件的 n 条数据

比如说返回 book 表的前 5 条数据:

select * from book limit 5;

2、offset

offset 是偏移量,和 limit 连用,比如说 limit 3 offset 5 表示舍弃前5条数据, 然后返回之后的 3条数据

可以理解成分页的用法,比如说每页数量为 10 条,然后我们分别获区第1、2、3、4页的数据:

select * from book limit 10 offset 0;
select * from book limit 10 offset 10;
select * from book limit 10 offset 20;
select * from book limit 10 offset 30;

注意: 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 * from book order by book_name asc;

其实,asc 是 order by 的默认排序方式,所以如果是升序,asc 是可以省略的。

select * from book order by book_name;

如果是倒序就是用 desc:

select * from book order by book_name desc;

2、多个字段排序

如果是多个字段分别倒序、升序,通过逗号分隔连用即可:

select * from book order by book_name desc, author asc;

3、按照中文排序

现在插入几条带中文的数据:

insert into book (book_name, author) values('中文测试', '作者1'), ('这是测试', '作者2'), ('测试', '作者3');

直接使用排序的逻辑会发现排序是不对的,因为 '测试' 的拼音是在 'ceshi',但是排序却并没有在其他两条数据前面:

select * from book order by book_name;

那么这就需要用到另一个用法:

select * from book order by convert(book_name using gbk);

其语法是 convert(field_name using gbk),convert 函数里是字段名,然后 using gbk 表示转化成 gbk 的格式来排序。

以上就是MySQL限制数据返回条数limit offset及排序order by用法的详细内容,更多关于MySQL limit offset order by的资料请关注脚本之家其它相关文章!

相关文章

  • mysql中窗口函数lag()用法小结

    mysql中窗口函数lag()用法小结

    LAG()函数在MySQL中用于访问当前行前一行或多行的数据,它包括偏移量、默认值、分区和排序子句,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习吧
    2024-11-11
  • MySQL中的binlog刷盘机制解读

    MySQL中的binlog刷盘机制解读

    MySQL binlog由server层提供,支持三种刷盘策略:sync_binlog=0(性能高但可能丢失)由操作系统决定刷盘时机;=1(最安全)每次提交强制刷盘;=2(折中)每N次提交后刷盘,5.7.7前默认0,之后默认1
    2025-08-08
  • MySQL删除数据Delete与Truncate语句使用比较

    MySQL删除数据Delete与Truncate语句使用比较

    在MySQL数据库中,DELETE语句和TRUNCATE TABLE语句都可以用来删除数据,但是这两种语句还是有着其区别的,下文就为您介绍这二者的差别所在
    2012-09-09
  • DOS命令行窗口mysql中文显示乱码问题解决方法

    DOS命令行窗口mysql中文显示乱码问题解决方法

    MySQL的默认编码是Latin1,不支持中文,如何修改MySQL的默认编码呢,下面为大家详细介绍下
    2014-05-05
  • MySQL 5.6 中 TIMESTAMP有那些变化

    MySQL 5.6 中 TIMESTAMP有那些变化

    前段时间,系统MySQL从5.5升级到了5.6,系统出现了大量的异常。大部分异常引起原因是由于TIMESTAMP的行为发生了变化,下面通过此篇文章给大家详解MySQL 5.6 中 TIMESTAMP有那些变化,需要的朋友可以参考下
    2015-08-08
  • Mysql MVCC多版本并发控制详情

    Mysql MVCC多版本并发控制详情

    这篇文章主要介绍了Mysql MVCC多版本并发控制详情,MVCC是一种并发控制的方法,一般在数据库管理系统中,实现对数据库的并发访问,在编程语言中实现事务内存,下文更多相关介绍需要的小伙伴可以参考一下
    2022-04-04
  • MySQL中导出用户权限设置的脚本分享

    MySQL中导出用户权限设置的脚本分享

    这篇文章主要介绍了MySQL中导出用户权限设置的脚本分享,本文通过导出mysql.user表中数据实现导出权限设置,需要的朋友可以参考下
    2014-10-10
  • MySQL中Stmt 预处理提高效率问题的小研究

    MySQL中Stmt 预处理提高效率问题的小研究

    在oracle数据库中,有一个变量绑定的用法,很多人都比较熟悉,可以调高数据库效率,应对高并发等,好吧,这其中并不包括我,当同事问我MySQL中有没有类似的写法时,我是很茫然的,于是就上网查,找到了如下一种写法
    2011-08-08
  • MySQL对小数进行四舍五入的操作实现

    MySQL对小数进行四舍五入的操作实现

    数学函数是MySQL中常用的一类函数,其主要用于处理数字,包括整型和浮点数等等,本文主要介绍了MySQL对小数进行四舍五入的操作实现,具有一定的参考价值,感兴趣的可以了解一下
    2023-08-08
  • MySQL性能瓶颈排查定位实例详解

    MySQL性能瓶颈排查定位实例详解

    这篇文章主要介绍了MySQL性能瓶颈排查定位的方法,结合实例形式详细分析了MySQL排查性能瓶颈问题的步骤与相关技巧,需要的朋友可以参考下
    2016-04-04

最新评论