SQL–按订单

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

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

按一列排序:

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

语法:

SELECT * FROM table_name ORDER BY column_name ASC|DESC
//Where 
table_name: name of the table.
column_name: name of the column according to which the data is needed to be arranged.
ASC: to sort the data in ascending order.
DESC: to sort the data in descending order.
| : use either ASC or DESC to sort in ascending or descending order//

按多列排序:

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

语法:

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

Screenshot from 2016-12-19 12-53-29

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

按单列排序 :

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

查询:

SELECT * FROM Student ORDER BY ROLL_NO DESC;

输出:

滚不 名称 住址 电话 年龄
8. 尼拉杰 阿利普尔 XXXXXXXXX 19
7. 罗希特 巴尔盖特 XXXXXXXXX 18
6. 德纳拉吉 巴拉巴贾尔 XXXXXXXXX 20
5. 萨普塔希 加尔各答 XXXXXXXXX 19
4. 深的 拉姆纳加尔 XXXXXXXXX 18
3. 里扬卡 西里古里 XXXXXXXXX 20
2. 普拉蒂克 比哈尔邦 XXXXXXXXX 19
1. 严厉的 德里 XXXXXXXXX 18

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

按多列排序 :

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

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

输出:

滚不 名称 住址 电话 年龄
7. 罗希特 巴尔盖特 XXXXXXXXX 18
4. 深的 拉姆纳加尔 XXXXXXXXX 18
1. 严厉的 德里 XXXXXXXXX 18
8. 尼拉杰 阿利普尔 XXXXXXXXX 19
5. 萨普塔希 加尔各答 XXXXXXXXX 19
2. 普拉蒂克 比哈尔邦 XXXXXXXXX 19
6. 德纳拉吉 巴拉巴贾尔 XXXXXXXXX 20
3. 里扬卡 西里古里 XXXXXXXXX 20

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

注:

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

再举一个例子,下面的查询将给出与上面类似的输出: 查询:

SELECT * FROM Student ORDER BY Age , ROLL_NO DESC;

输出:

滚不 名称 住址 电话 年龄
7. 罗希特 巴尔盖特 XXXXXXXXX 18
4. 深的 拉姆纳加尔 XXXXXXXXX 18
1. 严厉的 德里 XXXXXXXXX 18
8. 尼拉杰 阿利普尔 XXXXXXXXX 19
5. 萨普塔希 加尔各答 XXXXXXXXX 19
2. 普拉蒂克 比哈尔邦 XXXXXXXXX 19
6. 德纳拉吉 巴拉巴贾尔 XXXXXXXXX 20
3. 里扬卡 西里古里 XXXXXXXXX 20

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

一个整数,用于标识数据库基础查询中SelectItems中的列数 SELECT语句 .列数必须大于0且不大于结果表中的列数。换句话说,如果我们想按列排序,必须在选择列表中指定该列。

该规则按条款检查顺序 那个 参考选择列表 使用列号而不是列名。 ORDER BY子句中的列号会损害SQL语句的可读性。此外,更改“选择”列表中列的顺序不会影响按名称而不是数字引用列的顺序。

语法:

Order by Column_Number asc/desc

这里我们举一个例子,根据第1列(即Roll_编号)对数据库表进行排序。 为此,查询将是:

查询:

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

图片[2]-SQL–按订单-yiteyi-C++库

输出:

图片[3]-SQL–按订单-yiteyi-C++库

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享