SQL - 排序结果



SQL 的ORDER BY 子句用于根据一个或多个列对数据进行升序或降序排序。默认情况下,某些数据库会按升序排序查询结果。

此外,ORDER BY 子句还可以按首选顺序对数据库表中的数据进行排序。这种情况下,表记录的排序可能不是按任何标准顺序(如字母顺序或字典顺序),而是基于任何外部条件。例如,在包含组织各种客户所下订单列表的 ORDERS 表中,可以根据下订单的日期对订单详情进行排序。这不需要按字母顺序排序,而是基于“先到先得”。

语法

用于按升序或降序排序结果的 ORDER BY 子句的基本语法如下:

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

您可以在 ORDER BY 子句中使用多个列。请确保您用于排序的任何列都包含在列列表中。

按升序排序结果

使用 SQL 中的 Order By 子句,可以默认或通过在子句条件中指定“ASC”关键字来按升序对数据库表中的记录进行排序。让我们来看一个例子来理解这一点。

示例

假设我们使用 CREATE TABLE 语句创建了一个名为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)
);

现在,使用 INSERT 语句向此表中插入值,如下所示:

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 );

表将创建为:

ID 姓名 年龄 地址 薪水
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

以下是一个示例,它将按姓名和薪水升序排序结果。

SELECT * FROM CUSTOMERS ORDER BY NAME;

输出

这将产生以下结果:

ID 姓名 年龄 地址 薪水
4 Chaitali 25 Mumbai 6500.00
5 Hardik 27 Bhopal 8500.00
3 kaushik 23 Kota 2000.00
2 Khilan 25 Delhi 1500.00
6 Komal 22 Hyderabad 4500.00
7 Muffy 24 Indore 10000.00
1 Ramesh 32 Ahmedabad 2000.00

按降序排序结果

但是,要按降序对数据库表中的记录进行排序,我们需要在子句条件中指定“DESC”关键字。让我们来看一个例子来理解这一点。

示例

以下查询根据NAME列按降序对 CUSTOMERS 表的记录进行排序。

SELECT * FROM CUSTOMERS ORDER BY NAME DESC;

输出

这将产生以下结果:

ID 姓名 年龄 地址 薪水
1 Ramesh 32 Ahmedabad 2000.00
7 Muffy 24 Indore 10000.00
6 Komal 22 Hyderabad 4500.00
2 Khilan 25 Delhi 1500.00
3 kaushik 23 Kota 2000.00
5 Hardik 27 Bhopal 8500.00
4 Chaitali 25 Mumbai 6500.00

按首选顺序排序结果

也可以使用 ORDER BY 子句中的 CASE 语句按自己的首选顺序对表的记录进行排序。所有值都与它们应该排序的位置一起在子句中指定;如果未给值指定任何数字,则它们会自动按升序排序。

示例

要按自己的首选顺序获取行,使用的 SELECT 查询如下:

SELECT * FROM CUSTOMERS
ORDER BY ( CASE ADDRESS
   WHEN 'DELHI' 	 THEN 1
   WHEN 'BHOPAL' 	 THEN 2
   WHEN 'KOTA' 	 THEN 3
   WHEN 'AHMEDABAD' THEN 4
   WHEN 'Hyderabad' 	THEN 5
   ELSE 100 END) ASC, ADDRESS DESC;

输出

这将产生以下结果:

ID 姓名 年龄 地址 薪水
2 Khilan 25 Delhi 1500.00
5 Hardik 27 Bhopal 8500.00
3 kaushik 23 Kota 2000.00
1 Ramesh 32 Ahmedabad 2000.00
6 Komal 22 Hyderabad 4500.00
4 Chaitali 25 Mumbai 6500.00
7 Muffy 24 Indore 10000.00

这将首先按您自己的首选顺序对客户的地址进行排序,然后按其余地址的自然顺序排序。此外,其余地址将按反字母顺序排序。

广告