MySQL Order By

MySQL Order By 子句用于对表数据进行升序或降序排序。默认情况下,除非您有索引,否则数据不会以任何顺序插入表中。

因此,如果您想以特定顺序检索数据,则必须使用 Order By 语句对其进行排序。Order By 子句的基本语法如下所示

MySQL Order By 语法

SELECT Column_Names
FROM Table_Name
ORDER BY {Column, Numerical Position, Alias Columns}[ASC | DESC]

从上面的语法中,您可以看出我们可以在 Order By 语句中使用列名、列名的数字位置或别名列名。我们将使用下面显示的数据来举例说明 Order By 语句。

MySQL Order By 升序

要以升序对数据进行排序,我们必须使用 Order By 语句,后跟 ASC 关键字。以下是按升序对数据进行排序的方式。例如,作为销售经理,如果您想识别表现不佳的产品(没有销售或销售较少的产品),那么您可以使用此方法。

通过查看结果,您可以了解到 x 的表现不佳,而 y 根本没有销售。使用这些数据,您可以尝试不同的策略来提高销售额。

MySQL 升序排序示例

在这个 MySQL 示例中,我们将使用 Yearly Income(年收入)按升序对数据进行排序。请将 Yearly Income 替换为 中所需的任何列。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, Yearly_Income, Sales 
FROM customers
ORDER BY Yearly_Income ASC;

从下面的屏幕截图中,您可以看到数据已按 Yearly Income(年收入)升序排序。

MySQL Order By Asc 3

不使用 ASC 进行升序排序

ASC 关键字是 Order By 语句中的默认关键字,因此使用 ASC 是可选的。在此示例中,我们将不使用 ASC 关键字,按 First_Name(名字)升序对客户数据进行排序。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, Yearly_Income, Sales 
FROM customers
ORDER BY First_Name;
Without using ASC 2

按数字位置升序排序

在这个 Order By ASC 示例中,我们将使用列名的数字位置按升序对客户表进行排序。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, Yearly_Income, Sales 
FROM customers
ORDER BY 2 ASC;

Last_Name(姓氏)的数字位置是 2。因此,数据按此列排序。

Order By Asc Numeric Position 4

MySQL Order By 多个列升序排序

在此 Order By ASC 示例中,我们使用多个列对数据进行排序。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, Yearly_Income, Sales 
FROM customers
ORDER BY First_Name ASC, Last_Name ASC;

--OR you can Simply Write 
ORDER BY First_Name, Last_Name

首先,数据按 First Name(名字)升序排序。然后按 Last Name(姓氏)升序排序。

Multiple columns in ascending 5

使用别名列按 ASC 排序

在此 Order By ASC 示例中,我们将使用别名列名按升序对客户数据进行排序。

USE company;
SELECT CONCAT(First_Name, ' ', Last_Name) AS 'Name', 
       Education, Profession, Yearly_Income, Sales 
FROM customers
ORDER BY 'Name' ASC;

我们使用 concat 字符串函数连接 First Name 和 Last_Name 列以创建 Name(一个别名)。接下来,我们使用别名。这意味着客户数据按 Name 升序排序。

Sort Using Alias Columns 6

MySQL ORDER BY 降序

要以降序对数据进行排序,请使用 Order By 语句,后跟 DESC 关键字。以下是我们可以以降序显示记录的方式列表。

例如,如果您正在亚马逊上搜索鞋子。如果您在搜索栏中输入“鞋子”,它会按评分显示鞋子。这意味着鞋子是根据评分显示的。从技术上讲,

Select Shoe 
from Product table
order by Product Rating desc

降序排序示例

在此 Order By Desc 示例中,我们将使用 Sales(销售额)列以降序显示客户表。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, 
       Yearly_Income, 
       Sales 
FROM customers
ORDER BY Sales DESC;
order by Descending DESC 7

从上面的屏幕截图中,您可以看到行已按 Sales(销售额)降序排列。

使用数字位置降序排序

Education(教育程度)列的数字位置是 3。因此,数据在 Order by 中使用此列以降序显示。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, 
       Yearly_Income, 
       Sales 
FROM customers
ORDER BY 3 DESC;
DESC using Numeric Column Position 8

MySQL Order By 多个列降序排序

在此示例中,我们使用多个列来组织行。首先,按 Education(教育程度)降序,然后按 Yearly Income(年收入)降序。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, 
       Yearly_Income, 
       Sales 
FROM customers
ORDER BY 3 DESC, Yearly_Income DESC;
Multiple Columns in DESC 9

在此 Order By 示例中,我们将使用别名列名以降序组织表行。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, 
       Yearly_Income, Yearly_Income + 12500 AS 'New Income',
       Sales 
FROM customers
ORDER BY 'New Income' DESC;

我们为每个 Yearly Income(年收入)列添加了 12500,并使用 别名 分配了一个新的 Income(收入)名称。接下来,我们使用别名。这意味着行按 New Income(新收入)降序组织。

MySQL Order BY DESC using Alias Column 10

结合 ASC 和 DESC

我们还可以在单个 MySQL Order By 语句中结合使用 ASC 和 DESC 关键字。在此示例中,我们按 Education(教育程度)升序组织,然后按 Yearly Income(年收入)降序组织。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, 
       Yearly_Income, 
       Sales 
FROM customers
ORDER BY Education ASC, Yearly_Income DESC;
Order By DESC 11

让我们先使用 DESC 关键字,再使用 ASC 关键字。这意味着下面的查询按 Education(教育程度)降序和 Yearly Income(年收入)升序组织记录。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, 
       Yearly_Income, 
       Sales 
FROM customers
ORDER BY Education DESC, Yearly_Income ASC;
MySQL Order BY DESC and ASC 12

命令提示符示例

让我向您展示如何使用命令提示符对记录进行排序。在此 Order by 示例中,我们按 First Name(名字)和 Last Name(姓氏)升序排序,然后按 Yearly Income(年收入)降序排序。

USE company;
SELECT First_Name, Last_Name, 
       Education, Profession, 
       Yearly_Income, 
       Sales 
FROM customers
ORDER BY First_Name ASC, Last_Name ASC, Yearly_Income DESC;