SQL – ORDER BY 语句

SQL ORDER BY 语句

SQL中的ORDER BY语句用于根据一个或多个列对获取的数据进行升序或降序排序。

  • 默认情况下,ORDER BY按升序排列数据。
  • 我们可以使用关键字DESC对数据进行降序排序,使用关键字ASC对数据进行升序排序。

按一列排序

要按升序或降序排序,我们可以分别使用关键字ASC或DESC。

语法:

SELECT * FROM table_name ORDER BY column_name ASC|DESC

其中
table_name : 表名.
column_name : 需要排列数据的列的名称.
ASC : 按升序对数据排序.
DESC : 按降序对数据进行排序.
| : 使用ASC或DESC按升序或降序排序

按多列排序

要按升序或降序排序,我们可以分别使用关键字ASC或DESC。要根据多个列排序,请使用(,)操作符分隔列名。

语法:

SELECT * FROM table_name ORDER BY column1 ASC|DESC , column2 ASC|DESC

SQL ORDER BY

现在考虑上面的数据库表,找出不同查询的结果。

按单个列排序

在本例中,我们将从Student表中获取所有数据,并根据列ROLL_NO按降序对结果进行排序。

语法:

SELECT * FROM Student ORDER BY ROLL_NO DESC;

输出:

ROLL_NO NAME ADDRESS PHONE Age
8 NIRAJ ALIPUR XXXXXXXXXX 19
7 ROHIT BALURGHAT XXXXXXXXXX 18
6 DHANRAJ BARABAJAR XXXXXXXXXX 20
5 SAPTARHI KOLKATA XXXXXXXXXX 19
4 DEEP RAMNAGAR XXXXXXXXXX 18
3 RIYANKA SILIGURI XXXXXXXXXX 20
2 PRATIK BIHAR XXXXXXXXXX 19
1 HARSH DELHI XXXXXXXXXX 18

在上面的例子中,如果我们想按升序排序,我们必须使用ASC来代替DESC。

按多列排序

在本例中,我们将从Student表中获取所有数据,然后根据列Age对结果进行升序排序。然后根据列ROLL_NO降序排列。
语法:

SELECT * FROM Student ORDER BY Age ASC , ROLL_NO DESC;

输出:

ROLL_NO NAME ADDRESS PHONE Age
7 ROHIT BALURGHAT XXXXXXXXXX 18
4 DEEP RAMNAGAR XXXXXXXXXX 18
1 HARSH DELHI XXXXXXXXXX 18
8 NIRAJ ALIPUR XXXXXXXXXX 19
5 SAPTARHI KOLKATA XXXXXXXXXX 19
2 PRATIK BIHAR XXXXXXXXXX 19
6 DHANRAJ BARABAJAR XXXXXXXXXX 20
3 RIYANKA SILIGURI XXXXXXXXXX 20

在上面的输出中,我们可以看到,首先,结果是按照Age升序排序的。有多排相同的年龄。现在,根据ROLL_NO对结果集进一步排序,将根据ROLL_NO降序对具有相同年龄的行进行排序。

注意:

ASC是ORDER BY子句的默认值。因此,如果在ORDER BY子句中不指定列名之后的任何内容,默认情况下输出将按升序排序。

再举一个例子,下面的查询会给出类似的输出:
语法:

SELECT * FROM Student ORDER BY Age , ROLL_NO DESC;

输出:

ROLL_NO NAME ADDRESS PHONE Age
7 ROHIT BALURGHAT XXXXXXXXXX 18
4 DEEP RAMNAGAR XXXXXXXXXX 18
1 HARSH DELHI XXXXXXXXXX 18
8 NIRAJ ALIPUR XXXXXXXXXX 19
5 SAPTARHI KOLKATA XXXXXXXXXX 19
2 PRATIK BIHAR XXXXXXXXXX 19
6 DHANRAJ BARABAJAR XXXXXXXXXX 20
3 RIYANKA SILIGURI XXXXXXXXXX 20

按列号排序(而不是名称)

的基础查询中的SelectItems中标识列编号的整数 SELECT statement 。列号必须大于0,且不大于结果表中的列数。换句话说,如果我们希望按列排序,则必须在SELECT列表中指定该列。

规则检查ORDER BY子句 that 参考选择列表 columns 使用列号而不是列名。 ORDER BY子句中的列号会降低SQL语句的可读性。此外,当按名称而不是按数字引用列时,更改SELECT列表中的列的顺序不会影响ORDER BY。

语法:

Order by Column_Number asc/desc

这里我们以第1列(即Roll_Number)为例对数据库表进行排序。 为此,一个查询将是:

语法:

CREATE TABLE studentinfo
( Roll_no INT,
NAME VARCHAR(25),
Address VARCHAR(20),
CONTACTNO BIGINT NOT NULL,
Age INT ); 
INSERT INTO studentinfo
VALUES (7,'ROHIT','GAZIABAD',9193458625,18),
(4,'DEEP','RAMNAGAR',9193458546,18),
(1,'HARSH','DELHI',9193342625,18),
(8,'NIRAJ','ALIPUR',9193678625,19),
(5,'SAPTARHI','KOLKATA',9193789625,19),
(2,'PRATIK','BIHAR',9193457825,19),
(6,'DHANRAJ','BARABAJAR',9193358625,20),
(3,'RIYANKA','SILIGURI',9193218625,20);
SELECT Name, Address
FROM studentinfo
ORDER BY 1

SQL ORDER BY

输出:

SQL ORDER BY

Python教程

Java教程

Web教程

数据库教程

图形图像教程

大数据教程

开发工具教程

计算机教程