SQL学习之order by关键字

参考源

SQL order by 关键字

SQL order by 子句用于对结果集按照一个列或者多个列进行排序

SELECT column_name FROM table_name ORDER BY column_name [ASC|DESC] [, column_name [ASC|DESC]];

说明:

  1. order by 关键字默认按照升序对记录进行排序

  2. 如需要按照降序对记录进行排序,可以使用 desc 关键字

  3. 如果没有 order by 语句,结果集会以 主键 升序排序
    一般情况下,主键都是 id

示例数据

CREATE DATABASE IF NOT EXISTS hardy_db DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci;

USE hardy_db;

DROP TABLE IF EXISTS lesson;

CREATE TABLE lesson (
	id INT ( 11 ) NOT NULL PRIMARY KEY AUTO_INCREMENT,
	name VARCHAR ( 32 ) DEFAULT '',
	views INT ( 11 ) NOT NULL DEFAULT 0,
	created_at TIMESTAMP 
);

INSERT INTO lesson ( id, name, views, created_at )
VALUES
	( 1, 'Python3 基础教程', 981, '2019-03-18 13:52:03' ),
	( 2, 'JavaScript 基础教程', 73, '2019-03-18 16:03:32' ),
	( 3, 'Ruby 基础教程', 199, '2019-04-01 06:16:14' ),
	( 4, 'SQL 基础教程', 533, '2019-05-02 08:13:42' ),
	( 5, 'Linux 基础教程', 1000, '2019-06-02 08:13:42' );

基本使用

升序

默认升序排序,关键字为 asc

下面的 SQL 语句从 “lesson” 表中选取所有的课程,并按照 “views” 列升序排序:

select * from lesson order by views;

OR

select * from lesson order by views asc;

运行以上 SQL 语句,输出结果如下

mysql> select * from lesson order by views;
+----+--------------------+-------+---------------------+
| id | name               | views | created_at          |
+----+--------------------+-------+---------------------+
|  2 | JavaScript基础教程  |    73 | 2019-03-18 16:03:32 |
|  3 | Ruby 基础教程       |   199 | 2019-04-01 06:16:14 |
|  4 | SQL 基础教程        |   533 | 2019-05-02 08:13:42 |
|  1 | Python3 基础教程    |   981 | 2019-03-18 13:52:03 |
+----+--------------------+-------+---------------------+
4 rows in set (0.00 sec)

降序

如果要降序排序,可以使用 desc 关键字

下面的 SQL 语句从 “lesson” 表中选取所有课程,并按照 “views” 列降序排序

select * from lesson order by views desc;

运行以上 SQL 语句,输出结果如下:

mysql> select * from lesson order by views desc;
+----+--------------------+-------+---------------------+
| id | name               | views | created_at          |
+----+--------------------+-------+---------------------+
|  1 | Python3 基础教程   |   981 | 2019-03-18 13:52:03 |
|  4 | SQL 基础教程       |   533 | 2019-05-02 08:13:42 |
|  3 | Ruby 基础教程      |   199 | 2019-04-01 06:16:14 |
|  2 | JavaScript基础教程 |    73 | 2019-03-18 16:03:32 |
+----+--------------------+-------+---------------------+
4 rows in set (0.00 sec)

多列排序

如果要多列排序,那么每个排序字段使用逗号 (, ) 分隔

下面的 SQL 语句从 “lesson” 表中选取所有课程,并按照 “views” 和 “id” 列排序

select * from lesson order by views asc, id asc;

运行以上 SQL 语句,输出结果如下:

mysql> select * from lesson order by views, id;
+----+--------------------+-------+---------------------+
| id | name               | views | created_at          |
+----+--------------------+-------+---------------------+
|  2 | JavaScript基础教程 |    73 | 2019-03-18 16:03:32 |
|  3 | Ruby 基础教程      |   199 | 2019-04-01 06:16:14 |
|  4 | SQL 基础教程       |   533 | 2019-05-02 08:13:42 |
|  1 | Python3 基础教程   |   981 | 2019-03-18 13:52:03 |
+----+--------------------+-------+---------------------+
4 rows in set (0.00 sec)

说明
多列排序排序过程:

select * from lesson order by views, id;
  • 按照排序字段从左往右 ( views, id )
  • 如果第一个排序字段 ( views ) 的值不一样,则按照第一个排序字段的值排序
  • 如果第一个排序字段 ( views ) 的值一样,则按照第二个排序字段 ( id ) 的值排序
  • 以此类推
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值