跳到主要内容

二十五、MySQL ORDER BY 排序

前面我们学到了可以使用 SELECT FROM 从 MySQL 中查询数据,但是,查出来数据的排序可能不是我们想要的,比如我们想根据 name 排序,要怎么做呢?

答案就是使用 MySQL 的 ORDER BY 子句

ORDER BY 子句可以设定想按哪个字段哪种方式来进行排序,再返回搜索结果

ORDER BY 子句语法

SQLSELECT 中语句使用 ORDER BY 子句对查询数据进行排序的语法格式如下

SELECT field1, field2,...fieldN table_name1, table_name2...
ORDER BY field1, [field2...] [ASC [DESC]]
  • 可以使用任何字段来作为排序的条件,从而返回排序后的查询结果
  • 可以设定多个字段来排序
  • 可以使用 ASC 或 DESC 关键字来设置查询结果是按升序或降序排列 默认情况下按升序排列
  • 可以添加 WHERE 子句来设置条件

范例数据

可以在mysql> 命令行中运行以下语句填充范例数据

DROP TABLE IF EXISTS tbl_language;
CREATE TABLE IF NOT EXISTS tbl_language(
id INT UNSIGNED AUTO_INCREMENT,
name VARCHAR(64) NOT NULL,
url VARCHAR(128) NOT NULL,
founded_at DATE,
PRIMARY KEY ( id )
)ENGINE=InnoDB DEFAULT CHARSET=utf8mb4;
INSERT INTO tbl_language VALUES
(1,'Python','https://pottercoding.cn','1991-2-20'),
(2,'PHP','http://www.php.net','1994-1-1'),
(3,'Ruby','https://www.ruby-lang.org/','1996-12-25');

tbl_language 表中的数据如下

+----+--------+----------------------------+------------+
| id | name | url | founded_at |
+----+--------+----------------------------+------------+
| 1 | Python | https://pottercoding.cn | 1991-02-20 |
| 2 | PHP | http://www.php.net | 1994-01-01 |
| 3 | Ruby | https://www.ruby-lang.org/ | 1996-12-25 |
+----+--------+----------------------------+------------+