返回顶部
首页 > 资讯 > 数据库 >怎么使用MySQL中order by
  • 689
分享到

怎么使用MySQL中order by

2023-06-25 15:06:40 689人浏览 泡泡鱼
摘要

本篇内容主要讲解“怎么使用MySQL中order by”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Mysql中order by”吧!1、简介在使用select语句时可以结合o

本篇内容主要讲解“怎么使用MySQL中order by”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用Mysql中order by”吧!

1、简介

在使用select语句时可以结合order by对查询的数据进行排序。如果不使用order by默认情况下mysql返回的数据集,与它在底层表中的顺序相同,可能与你添加数据到表中的顺序一致,也可能不一致(在你对表进行修改、删除等操作时Mysql会对内存进行整理,此时数据的顺序会发生改变)因此如果我们希望得到的数据是有顺序的,就应该明确排序方式。

2、正文

首先准备一张User表,DDL和表数据如下所示,可以直接复制使用。

SET NAMES utf8mb4;SET FOREIGN_KEY_CHECKS = 0;-- ------------------------------ Table structure for user-- ----------------------------DROP TABLE IF EXISTS `user`;CREATE TABLE `user`  (  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '主键',  `name` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '用户名',  `age` int(11) NOT NULL COMMENT '年龄',  `sex` smallint(6) NOT NULL COMMENT '性别',  PRIMARY KEY (`id`) USING BTREE) ENGINE = InnoDB AUTO_INCREMENT = 8 CHARACTER SET = utf8 COLLATE = utf8_general_ci ROW_FORMAT = Dynamic;-- ------------------------------ Records of user-- ----------------------------INSERT INTO `user` VALUES (1, '李子捌', 18, 1);INSERT INTO `user` VALUES (2, '张三', 22, 1);INSERT INTO `user` VALUES (3, '李四', 38, 1);INSERT INTO `user` VALUES (4, '王五', 25, 1);INSERT INTO `user` VALUES (5, '六麻子', 13, 0);INSERT INTO `user` VALUES (6, '田七', 37, 1);INSERT INTO `user` VALUES (7, '谢礼', 18, 1);SET FOREIGN_KEY_CHECKS = 1;

数据的初始顺序如下所示:

mysql> select * from user;+----+--------+-----+-----+| id | name   | age | sex |+----+--------+-----+-----+|  1 | 李子捌 |  18 |   1 ||  2 | 张三   |  22 |   1 ||  3 | 李四   |  38 |   1 ||  4 | 王五   |  25 |   1 ||  5 | 六麻子 |  13 |   0 ||  6 | 田七   |  37 |   1 ||  7 | 谢礼   |  18 |   1 |+----+--------+-----+-----+7 rows in set (0.00 sec)

2.1 单个列排序

我们首先来看使用order by对单个列进行排序。

需求:

根据用户年龄进行升序排序。

语句:

select * from user order by age;

结果:

mysql> select * from user order by age;+----+--------+-----+-----+| id | name   | age | sex |+----+--------+-----+-----+|  5 | 六麻子 |  13 |   0 ||  1 | 李子捌 |  18 |   1 ||  7 | 谢礼   |  18 |   1 ||  2 | 张三   |  22 |   1 ||  4 | 王五   |  25 |   1 ||  6 | 田七   |  37 |   1 ||  3 | 李四   |  38 |   1 |+----+--------+-----+-----+7 rows in set (0.00 sec)

分析:

可以看到user表输出顺序按照age升序排序输出,因此可以猜测MySQL默认的排序方式是升序。此外我这里使用*通配符查询所有列,并未明确指明查询age列;其实MySQLorder by后跟的列不一定要查询出来,比如 select name from user order by age;这样也是一样的效果。

2.2 多个列排序

order by不仅可以对单个列进行排序,它也可以对多个列进行排序,只需要把需要排序的列依次跟在order by之后就可以了。

测试之前,我们先往表中添加一条年龄相等的数据

mysql> insert into user (name, age, sex) values ('李子柒', 18, 1);Query OK, 1 row affected (0.01 sec)

需求:

根据用户年龄升序排序之后再更加用户名称排序。

语句:

select * from user order by age, name;

结果:

mysql> select * from user order by age, name;+----+--------+-----+-----+| id | name   | age | sex |+----+--------+-----+-----+|  5 | 六麻子 |  13 |   0 ||  1 | 李子捌 |  18 |   1 ||  8 | 李子柒 |  18 |   1 ||  7 | 谢礼   |  18 |   1 ||  2 | 张三   |  22 |   1 ||  4 | 王五   |  25 |   1 ||  6 | 田七   |  37 |   1 ||  3 | 李四   |  38 |   1 |+----+--------+-----+-----+8 rows in set (0.00 sec)

分析:

order by可以作用于多个列,MySQL会完全根据order by后列的顺序进行排序。不过MySQL对于中文的排序需要考虑数据库字符集编码的问题,如果不是很懂建议不要对中文进行排序,因为大多数情况我们需要得到的是拼音的排序结果,但是往往不尽人意哦!此外这里我们在age和name后都是没有跟排序方式的,所以默认都是升序,先根据age升序排序之后再根据name升序排序。如果需要使用降序,则需要指明DESC,比如 select id, name, age from user order by age, name desc;

2.3 排序的方式

order by有两种排序方式,它们分别是:

ASC -> 升序排序(默认排序方式)
DESC -> 降序排序

注意: 在上面说了order by对多个列进行排序,排序方式只会作用于一个列,比如你需要对user表中的数据同时按照age和name进行降序,就应该两个列都指明降序。

mysql> select * from user order by age desc, name desc;+----+--------+-----+-----+| id | name   | age | sex |+----+--------+-----+-----+|  3 | 李四   |  38 |   1 ||  6 | 田七   |  37 |   1 ||  4 | 王五   |  25 |   1 ||  2 | 张三   |  22 |   1 ||  7 | 谢礼   |  18 |   1 ||  8 | 李子柒 |  18 |   1 ||  1 | 李子捌 |  18 |   1 ||  5 | 六麻子 |  13 |   0 |+----+--------+-----+-----+8 rows in set (0.00 sec)

如果你只指定age列降序排序,name列不指定,那么MySQL会根据age降序排序后,再根据name列进行默认升序排序。

mysql> select * from user order by age desc, name;+----+--------+-----+-----+| id | name   | age | sex |+----+--------+-----+-----+|  3 | 李四   |  38 |   1 ||  6 | 田七   |  37 |   1 ||  4 | 王五   |  25 |   1 ||  2 | 张三   |  22 |   1 ||  1 | 李子捌 |  18 |   1 ||  8 | 李子柒 |  18 |   1 ||  7 | 谢礼   |  18 |   1 ||  5 | 六麻子 |  13 |   0 |+----+--------+-----+-----+8 rows in set (0.00 sec)

可以看到李子捌、李子柒、谢礼三行数据排序方式发生了改变。

2.4 order by结合limit

order by结合limit可以获取排序后的数据行记录数量。比如我们从user表中获取年龄最大的一个用户。可以看到李四同志38岁了,比较老了,属于年龄最大的人之一。

mysql> select * from user order by age desc limit 1;+----+------+-----+-----+| id | name | age | sex |+----+------+-----+-----+|  3 | 李四 |  38 |   1 |+----+------+-----+-----+1 row in set (0.00 sec)

limit需要跟在order by之后,如果位置不对,MySQL会抛出异常信息。

mysql> select * from user limit 1 order by age des;ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order by age des' at line 1

到此,相信大家对“怎么使用MySQL中order by”有了更深的了解,不妨来实际操作一番吧!这里是编程网网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

您可能感兴趣的文档:

--结束END--

本文标题: 怎么使用MySQL中order by

本文链接: https://lsjlt.com/news/305647.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • 怎么使用MySQL中order by
    本篇内容主要讲解“怎么使用MySQL中order by”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“怎么使用MySQL中order by”吧!1、简介在使用select语句时可以结合o...
    99+
    2023-06-25
  • MySQL中ORDER BY怎么用
    这篇文章主要介绍MySQL中ORDER BY怎么用,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!总的来说,在 MySQL 中的ORDER BY有两种排序实现方式,一种是利用有序索引获...
    99+
    2024-04-02
  • mysql中count(), group by, order by怎么用
    这篇文章给大家分享的是有关mysql中count(), group by, order by怎么用的内容。小编觉得挺实用的,因此分享给大家做个参考,一起跟随小编过来看看吧。mysql中count(), gr...
    99+
    2024-04-02
  • MySQL中Order By如何使用
    这篇文章将为大家详细讲解有关MySQL中Order By如何使用,文章内容质量较高,因此小编分享给大家做个参考,希望大家阅读完这篇文章后对相关知识有一定的了解。 ORDER BY uid ASC 按照u...
    99+
    2024-04-02
  • MySQL的order by怎么正确使用
    这篇文章主要介绍“MySQL的order by怎么正确使用”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“MySQL的order by怎么正确使用”文章能帮助大家解决...
    99+
    2024-04-02
  • MySQL中order by的使用详情
    目录1、简介2、正文2.1 单个列排序2.2 多个列排序2.3 排序的方式2.4 order by结合limit 1、简介 在使用select语句时可以结合order by...
    99+
    2024-04-02
  • mysql GROUP BY 怎么 order by 排序
    在 MySQL 中使用 GROUP BY 子句时,如果需要对结果进行排序,可以使用 ORDER BY 子句来对分组后的结果进行排序。 ORDER BY 子句应该放在 GROUP BY 子句之后,使用逗号来分隔需要排序的列,并在排序列后指定排...
    99+
    2023-09-09
    mysql 数据库 排序算法
  • mysql中order by如何用
    本篇内容主要讲解“mysql中order by如何用”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“mysql中order by如何用”吧! ...
    99+
    2024-04-02
  • mysql中order by的用法
    mysql中order by的用法:使用语法“SELECT 字段名 FROM 表名 ORDER BY 按什么字段排序”;主要是用来对结果集按照一个列或者多个列进行排序;在使用order by关键字时是默认按照升序对记录进行排序的,如...
    99+
    2024-04-02
  • MySQL group by和order by如何一起使用
    假设有一个表:reward(奖励表),表结构如下: CREATE TABLE test.reward ( id int(11) NOT NULL AUTO_INCREMENT, uid int(11) NOT...
    99+
    2022-05-27
    MySQL group by order by
  • mysql中order by和分组能一起使用么
    是的,mysql 允许在分组查询中使用 order by 子句排序结果,步骤如下:分组数据(group by)聚合数据(使用聚合函数)排序结果(order by) MySQL 中 OR...
    99+
    2024-05-09
    mysql 聚合函数
  • MySQL中ORDER BY子句有什么用?
    MySQL ORDER BY 子句用于指定查询结果的排序。关键字 ORDER BY 后面必须跟有我们要排序的列的名称。例如,我们要根据“价格”列对名为“ratelist”的下表进行排序 - mysql> Select * ...
    99+
    2023-10-22
  • mysql查询语句group by和order by的使用
    这篇文章主要讲解了“mysql查询语句group by和order by的使用”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“mysql查询语句group b...
    99+
    2024-04-02
  • MySQL中Order By语法的用法
    本篇内容介绍了“MySQL中Order By语法的用法”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! M...
    99+
    2024-04-02
  • MySQL使用order by field()自定义排序
    使用order by field()自定义排序 MySQL在对结果集排序的时候,可以根据某些字段排序,也可以通过field函数自定义任意排序。 语法 ... order by field(value,s...
    99+
    2018-11-09
    MySQL使用order by field()自定义排序
  • mysql order by limit的坑怎么解决
    这篇文章主要介绍“mysql order by limit的坑怎么解决”,在日常操作中,相信很多人在mysql order by limit的坑怎么解决问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操...
    99+
    2024-04-02
  • mysql中使用order by 速度很慢解决办法
            背景:                 今天在优化项目中的一条查询语句,耗时5秒左右,大概6张表关联查询,然后结果进行排序之后再分页查询20条数据。 代码: SELECT*FROMt_card_recharge LE...
    99+
    2023-09-01
    数据库 mybatis
  • MySQL中Order By索引的优化
    本篇内容介绍了“MySQL中Order By索引的优化”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成! 在...
    99+
    2024-04-02
  • MySQL中order by的执行过程
    目录一 、测试数据二、 全字段排序三、rowid 排序四、全字段排序 与 rowid 排序 比较前言: 在开发过程中,一定会经常碰到需要根据指定的字段排序来显示结果的需求。还是以前文...
    99+
    2024-04-02
  • sql中order by的作用
    sql 中 order by 子句对结果集中的行进行排序,以按特定顺序显示数据。它按升序或降序对一个或多个列进行排序,并支持多列排序、空值处理等高级用法。 SQL 中 ORDER BY...
    99+
    2024-05-02
    排列
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作