迹忆客 专注技术分享

当前位置:主页 > 学无止境 > 数据库 > MySQL >

在 MySQL 中对多列使用 ORDER BY 子句

作者:迹忆客 最近更新:2023/03/13 浏览次数:

今天,我们将了解在 MySQL 中使用多列的 ORDER BY 子句。

MySQL 中的 ORDER BY 子句

每当我们使用 SELECT 语句从表中检索数据时,输出中记录(行)的顺序是未指定的。要对其进行排序,我们可以将 ORDER BY 子句与 SELECT 语句结合使用。

使用 ORDER BY 子句,我们可以使用 ASC(升序)和 DESC(降序)选项对从一列或多列检索的数据进行升序或降序排序。

如果我们不指定选项(ASCDESC),ORDER BY 子句使用默认选项 ASC 按升序对数据进行排序。因此,我们使用以下查询得到相同的结果,因为两者是等价的。

#following both queries are equivalent
SELECT selectlist FROM tablename ORDER BY column1;
SELECT selectlist FROM tablename ORDER BY column1 ASC;

我们在 ORDER BY 子句之后只写一列,以使用一列对数据进行排序。否则,写入多个以逗号分隔的列。

请参阅以下代码行。

#sort data in ascending order by using one column
SELECT selectlist FROM tablename ORDER BY column1 ASC;

#sort data in descending order by using multiple columns
SELECT selectlist FROM tablename ORDER BY column1 DESC, column2 DESC;

在 MySQL 中对多列使用 ORDER BY 子句

要学习 ORDER BY 子句的使用,我们必须有一个表。出于这个原因,我们在 db_ms20 数据库中创建了一个名为 tb_students 的表,其中 tb 是表的前缀,db 是数据库的前缀。

这不是强制性的,而是一种很好的方法来区分具有确切名称的表和数据库。

示例代码(创建和填充表 tb_students):

#create a database
CREATE SCHEMA `db_ms20` ;

#create a table
CREATE TABLE `db_ms20`.`tb_students` (
    `ID` INT NOT NULL AUTO_INCREMENT,
    `FIRSTNAME` VARCHAR(45) NOT NULL,
    `LASTNAME` VARCHAR(45) NOT NULL,
    PRIMARY KEY (`ID`));

#insert data into a table
INSERT INTO db_ms20.tb_students (FIRSTNAME, LASTNAME) VALUES
('Thomas', 'Christoper'),
('Thomas', 'Jorge'),
('Mehvish', 'Ashiq'),
('Johny', 'James'),
('Daniel', 'Glass'),
('Debbra', 'Herring'),
('Daniel', 'Costner');

#select all data from the table
SELECT * FROM db_ms20.tb_students;

输出(tb_students 表的数据):

| ID   | FIRSTNAME | LASTNAME   |
| ---- | --------- | ---------- |
| 1    | Thomas    | Christoper |
| 2    | Thomas    | Jorge      |
| 3    | Mehvish   | Ashiq      |
| 4    | Johny     | James      |
| 5    | Daniel    | Glass      |
| 6    | Debbra    | Herring    |
| 7    | Daniel    | Costner    |

让我们使用带有 ASCDESC 选项的 ORDER BY 子句将结果集按升序或降序排序。

示例代码:

SELECT * FROM db_ms20.tb_students ORDER BY FIRSTNAME, LASTNAME;

# we can use the following query as an alternative
# for getting the same output
SELECT * FROM db_ms20.tb_students ORDER BY FIRSTNAME ASC, LASTNAME ASC;

输出:

在 mysql 中使用带有多列的 order by 子句 - 输出一

ORDER BY 子句使用 FIRSTNAME 列按升序对数据进行排序。此外,它使用 LASTNAME 列按升序对已排序的数据进行排序。

值得注意的一点是如何使用多列对数据进行排序。

数据将分两步排序,我们使用两列对数据进行排序。

类似地,我们可以通过在每一列中用 DESC 选项替换 ASC 来按降序对数据进行排序。下面是另一个示例,我们需要按降序对 FIRSTNAME 列和按升序对 LASTNAME 列进行排序。

示例代码:

SELECT * FROM db_ms20.tb_students ORDER BY FIRSTNAME DESC, LASTNAME ASC;

输出:

在 mysql 中使用带有多列的 order by 子句 - 输出二

在这里,ORDER BY 将按如下方式对数据进行排序:

请记住,如果你的数据集中有 NULL 值,那么 NULLS FIRST(将 non-NULL 值放在 NULL 值之后)和 NULLS LAST(将 NULL 值放在 non-NULL 值)选项可按如下方式使用:

SELECT selectlist FROM tablename
ORDER BY
column1 [ASC | DESC] [NULLS FIRST | NULLS LAST],
column2 [ASC | DESC] [NULLS FIRST | NULLS LAST];

转载请发邮件至 1244347461@qq.com 进行申请,经作者同意之后,转载请以链接形式注明出处

本文地址:

相关文章

使用 Mysqldump 备份 MySQL 中的数据

发布时间:2023/05/09 浏览次数:192 分类:MySQL

本篇文章将介绍如何使用 mysqldump 只备份数据。 在这里,我们将探讨 --no-create-info 、--compact 、--skip-triggers 和 --no-create-db 选项。

更新 MySQL 表中的主键

发布时间:2023/05/09 浏览次数:61 分类:MySQL

本篇文章介绍如何更新 MySQL 表中的主键。 我们将使用 ALTER 命令对主键进行任何更改。更新 MySQL 表中的主键 我们可以在多种情况下更新 MySQL 表中的主键。

在 MySQL 中获取命令历史记录

发布时间:2023/05/09 浏览次数:150 分类:MySQL

本文重点介绍了在 Windows 和 Linux 中获取我们已执行的 MySQL 命令历史记录的各种方法。MySQL命令历史

Oracle 的 decode 函数在 MySQL 中的等价物

发布时间:2023/05/09 浏览次数:115 分类:MySQL

本篇文章介绍了三种替代实现,我们可以将它们用作 MySQL 中 Oracle 的 decode() 函数的等价物。 为此,我们将使用 IF()、CASE 以及 FIELD() 和 ELT() 的组合。

在 Linux 中安装 MySQL 客户端

发布时间:2023/05/09 浏览次数:72 分类:MySQL

在 Linux 中安装 MySQL 客户端的命令。Linux 和 Unix 等环境作为命令行界面工作,仅在命令的帮助下运行。

在 MySQL 中转换为十进制

发布时间:2023/05/09 浏览次数:150 分类:MySQL

有时,我们可能需要将一种数据类型转换为另一种数据类型。 下面是我们如何使用带有 DECIMAL(M,D) 的 CAST() 和 CONVERT() 函数在 MySQL 中转换为十进制。

在 MySQL 中获取当前日期和时间

发布时间:2023/05/09 浏览次数:145 分类:MySQL

本篇文章我们将学习 NOW()、CURRENT_TIMESTAMP()(也写为 CURRENT_TIMESTAMP)和 SYSDATE() 来获取 MySQL 中的当前日期和时间。 我们还将看到这三个功能之间的比较。在 MySQL 中获取当前日期和时间

更改 MySQL 服务器中的 max_allowed_packet Size

发布时间:2023/05/09 浏览次数:142 分类:MySQL

本篇文章介绍如何更改 MySQL 服务器中的 max_allowed_packet 大小。 为了了解这一点,我们将使用两个操作系统,Windows 10 和 Linux (Ubuntu)。

扫一扫阅读全部技术教程

社交账号
  • https://www.github.com/onmpw
  • qq:1244347461

最新推荐

教程更新

热门标签

扫码一下
查看教程更方便