SQL ORDER BY 子句

SQL ORDER BY 子句有助于以升序或降序对数据进行排序。在表中,默认情况下,除非您有索引,否则数据不会按任何顺序插入。因此,如果您想以任何特定方式检索数据,您必须使用此 ORDER BY 子句与 Select 语句和 ASC 或 DESC 关键字一起对数据进行排序。

SQL Server Order By 子句的排序语法如下所示。

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

从上面的语法,您可以观察到我们可以在语句中使用列名、列的数字位置或别名。此外,我们还可以使用一个或多个列。我们使用以下数据来解释 ORDER BY 子句。

SQL ORDER BY ASC 语句

要按升序对数据进行排序,我们必须使用此 order by 子句语句,后跟 ASC 关键字。例如,以下是我们可以按升序对数据进行排序的几种方式。

例如,如果您是一个特定区域的销售经理,您的工作是识别表现不佳的产品(没有销售或销售额少的产品)。您可以编写查询,如 Select Product Name from Products Table,以升序对销售进行分类。

从结果中,您可以看出 x 的表现不佳,y 完全没有销售。管理层可以使用这些数据来尝试不同的策略以提高公司销售额。

SQL ORDER BY 子句单列升序

以下查询将按年收入升序对客户数据进行排序。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY [YearlyIncome] ASC

正如您所见,数据已按 [YearlyIncome] 排序。

Ascending

SQL Order By 升序,不使用 ASC

ASC 关键字是默认关键字,服务器会按字母顺序排列记录,因为这是默认的排序顺序。这就是为什么使用 ASC 关键字是可选的。例如,我们在以下语句中使用了前面没有 ASC 关键字的查询。

Sql Server Order By Without using ASC

按升序排序字符串或 Varchar 列

在此示例中,我们使用了一个 Education 字符串列来排列数据。此查询将使用 Education 按字母顺序对它们进行排序。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY [Education] ASC
ASC STRING

SQL Order by 数字升序(数字位置)

以下示例使用列的数字位置按升序对 Customer 表进行排序。

SELECT [FirstName] -- Numerical Position = 1 
      ,[LastName] -- Numerical Position = 2 
      ,[Education] -- Numerical Position = 3 
      ,[Occupation] -- Numerical Position = 4 
      ,[YearlyIncome]-- Numerical Position = 5 
      ,[Sales] -- Numerical Position = 6 
  FROM [Customer]
  ORDER BY 4 ASC

Occupation 的数字位置是第四列,因此 SQL 将按 Occupation 排列记录。

Sort By Numeric Position

使用别名列进行 ORDER BY 升序

在此示例中,我们将使用别名按升序排列结果。我们将 [FirstName] 和 [LastName] 合并为 [Full Name](这是别名)。接下来,我们使用了别名。这意味着客户按 [Full Name] 排序。

Asc using Alias Column

SQL Order By 多列升序

在此多列示例中,我们按 [YearlyIncome] 对客户进行排序,然后按 [Occupation] 进行排序。两列都将是升序。这意味着我们使用了多个列以特定格式进行排序。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY [YearlyIncome] ASC, [Occupation] ASC

--OR you can Simply remove the ASC Keywords
SQL Order By Multiple Columns in Asc

SQL ORDER BY Desc 子句

要按降序对数据进行排序,我们必须使用 ORDER BY Clause DESC 关键字。例如,如果您在亚马逊上搜索鞋子,当您在搜索栏中键入“鞋子”时,它将按评分显示鞋子。这意味着鞋子是根据评分排序的(技术上,从按产品评分降序组织的 Product 表中选择鞋子)。

以下是我们可以使用和显示记录的降序方式。

SQL ORDER BY 单列降序

在此示例查询中,我们使用了年收入。这意味着按年收入降序或 desc 对 customer 表中的数据进行排序。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY [YearlyIncome] DESC

从下面的结果集中,您可以看到 Customer 表按 [YearlyIncome] 降序排序。

descending

按降序排序字符串列

在此 order by 子句按降序或 desc 排序字符串的示例中,我们使用了 Occupation (varchar)。下面的代码将按 Occupation 降序或反向排序 customer 表中的所有记录。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY Occupation DESC
SQL Order By DESC using String Column

按数字降序排序(数字位置)

以下 SQL Order by 查询允许使用列名的数字位置对表进行排序,其中第一列为 1。例如,Sales 的数字位置是 7。因此,客户将按此 Sales 降序排列。

Numbers in Descending

使用别名列作为 Order By Desc

此 ORDER BY 子句示例使用别名按降序排列结果集。

SELECT [EmpID]
      ,[FirstName] + ' ' + [LastName] AS [Full Name]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY [Full Name] DESC

我们将 [FirstName] 和 [LastName] 合并为 [Full Name]。接下来,我们使用了别名。以下记录将按 [Full Name] 降序排序。

Order by Descending using Alias Column DESC

SQL ORDER BY 同一语句中升序和降序

它还允许我们在单个语句中组合 ASC 和 DESC 关键字。在此示例中,我们按 [YearlyIncome] 升序排序,然后按 [Occupation] 降序排序。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY [YearlyIncome] ASC, [Occupation] DESC
ASC and DESC

让我们先使用 ORDER BY Clause DESC 关键字,然后使用 ASC 关键字按降序和升序排列。它按 [YearlyIncome] 降序对客户进行排序,然后按 [Education] 升序进行排序。

Combine DESC and ASC in Order By Clause

Order By Case 语句

在此示例中,我们使用了 Case 语句。它将帮助您创建自己的(自定义)语句。下面的代码将按 Occupation 列对客户进行排序。例如,如果 Occupation 是 Management,那么它将排在第一位。如果 Occupation 是 Professional,那么它将排在第二位,等等。

SELECT [EmpID]
      ,[FirstName]
      ,[LastName]
      ,[Education]
      ,[Occupation]
      ,[YearlyIncome]
      ,[Sales]
  FROM [Customer]
  ORDER BY (CASE [Occupation] 
 WHEN 'Management' THEN 1
 WHEN 'Professional' THEN 2
 WHEN 'Skilled Manual' THEN 3
 ELSE 4
 END
 )ASC

Order By Group By 子句示例

在此示例中,我们使用了 Group By 子句。Group by 和此的组合可以帮助您排列分组或聚合的文本。

它按教育和职业对年收入和销售额进行分组求和。下面的语句返回基于年收入总和降序的 Group By 结果。

Order By Top 子句

在此示例中,我们使用了 Top Clause。它按年收入降序选择前 8 条记录。

评论已关闭。