Mysql 简明教程

MySQL - ORDER BY CLAUSE

MySQL ORDER BY Clause

MySQL ORDER BY 子句用于按提供的顺序对表的 1 个或多个列进行排序,该顺序可以是升序或降序。默认情况下,如果不指定排序顺序,它会按 ascending order 对列进行排序。

排序通过 2 个关键字指定;ASC 用于升序,DESC 用于降序。

使用 ORDER BY 子句,我们可以对表的多个列进行排序,并为每一列提供不同的排序顺序。例如,我们可以先按一列,然后按另一列对结果集进行排序,以此类推。

Syntax

以下是 MySQL 中 ORDER BY 子句的语法:

SELECT column-list
FROM table_name
[ORDER BY column1, column2, ..., columnN] [ASC|DESC]

在此,

  1. column-list 是我们要从 table_name 中检索的列的名称。

  2. column1, column2,…​columnN 是我们要排序(整理)的列。

  3. ASC 将按升序对列进行排序。

  4. DESC 将按降序对列进行排序。

默认情况下,ORDER BY 子句按升序排列提供的列。

Example

首先,让我们使用以下查询创建一个名为 CUSTOMERS 的表 −

CREATE TABLE CUSTOMERS (
   ID INT NOT NULL,
   NAME VARCHAR (20) NOT NULL,
   AGE INT NOT NULL,
   ADDRESS CHAR (25),
   SALARY DECIMAL (18, 2),
   PRIMARY KEY (ID)
);

以下查询将 7 条记录插入到上述创建的表中:

INSERT INTO CUSTOMERS (ID,NAME,AGE,ADDRESS,SALARY) VALUES
(1, 'Ramesh', 32, 'Ahmedabad', 2000.00 ),
(2, 'Khilan', 25, 'Delhi', 1500.00 ),
(3, 'Kaushik', 23, 'Kota', 2000.00 ),
(4, 'Chaitali', 25, 'Mumbai', 6500.00 ),
(5, 'Hardik', 27, 'Bhopal', 8500.00 ),
(6, 'Komal', 22, 'Hyderabad', 4500.00 ),
(7, 'Muffy', 24, 'Indore', 10000.00 );

执行以下查询以验证 CUSTOMERS 表是否已创建:

Select * from CUSTOMERS;

CUSTOMERS 表已成功创建:

现在,让我们按 NAME 列排序来显示 CUSTOMERS 表中的所有列:

默认情况下,ORDER BY 子句按 Ascending order 排序提供的列。

SELECT * FROM CUSTOMERS
ORDER BY NAME;

Output

正如我们在下面的输出中看到的,NAME 列按升序排序。

ORDER BY with DESC

我们可以使用 ORDER BY 子句和 DESC 关键字来按降序对表中的特定列进行排序。让我们通过以下示例了解一下。

Example

在以下查询中,我们按降序排列 NAME 列显示 CUSTOMERS 表中的所有列:

SELECT * FROM CUSTOMERS
ORDER BY NAME DESC;

Output

正如我们在下面的输出中看到的,NAME 列按降序排列。

ORDER BY with Multiple Columns

我们还可以对 MySQL 表的多个列进行排序。为此,我们需要在 ORDER BY 子句中指定所有列名。

Example

在此,我们按 ADDRESS 和 NAME 列对 CUSTOMERS 表中的所有列进行排序。

SELECT * FROM CUSTOMERS
ORDER BY ADDRESS, NAME;

Output

上面的查询首先按升序对 ADDRESS 列进行排序,并且对于具有相同 ADDRESS 值的任何行,它们将按升序对 NAME 列进行排序。

这意味着具有相同 ADDRESS 值的所有行将被分组在一起并按 NAME 排序。

ORDER BY with ASC and DESC

在 MySQL 中,我们可以在同一个查询中按 ASCDESC 对列进行排序。首先提供 ASC 的列将按升序排序,其次提供 DESC 的列将按降序排序。

Example

在此查询中,我们按年龄升序并按工资降序对 CUSTOMERS 表中的所有列进行排序:

SELECT * FROM CUSTOMERS
ORDER BY AGE ASC, SALARY DESC;

Output

执行给定的程序后,输出如下所示:

ORDER BY with LENGTH()

我们可以使用 MySQL 中的 ORDER BY 子句和 LENGTH() 函数来基于长度对特定列中存在的值进行排序。

Example

使用以下查询,我们按长度对 ADDRESS 列进行排序:

SELECT * FROM CUSTOMERS
ORDER BY LENGTH(ADDRESS) ASC;

Output

以上程序的输出如下所示:

Order By Clause Using a Client Program

除了使用 MySQL ORDER BY 子句对表的列进行排序外,我们还可以使用 Node.js、PHP、Java 和 Python 等客户端程序来实现相同的结果。

Syntax

以下是此操作在各种编程语言中的语法 −

Example

以下是这些程序 −