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] 排序。

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

按升序排序字符串或 Varchar 列
在此示例中,我们使用了一个 Education 字符串列来排列数据。此查询将使用 Education 按字母顺序对它们进行排序。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
ORDER BY [Education] ASC

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 排列记录。

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

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 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] 降序排序。

按降序排序字符串列
在此 order by 子句按降序或 desc 排序字符串的示例中,我们使用了 Occupation (varchar)。下面的代码将按 Occupation 降序或反向排序 customer 表中的所有记录。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
ORDER BY Occupation DESC

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

使用别名列作为 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] 降序排序。

SQL ORDER BY 同一语句中升序和降序
它还允许我们在单个语句中组合 ASC 和 DESC 关键字。在此示例中,我们按 [YearlyIncome] 升序排序,然后按 [Occupation] 降序排序。
SELECT [EmpID]
,[FirstName]
,[LastName]
,[Education]
,[Occupation]
,[YearlyIncome]
,[Sales]
FROM [Customer]
ORDER BY [YearlyIncome] ASC, [Occupation] DESC

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

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 条记录。

评论已关闭。