SQL自学:数据排列SELECT语句之子语句ORDER BY

一、排列数据

SELECT 列名

FROM 表名

ORDER BY 列名;

这句的意思是用于对检索出的数据按照指定的列进行排序

例如,假设有一个“students”表,包含“student_id”(学生学号)、“student_name”(学生姓名)等列。如果想要按照学生姓名进行升序排列,可以使用:

SELECT student_name
FROM students
ORDER BY student_name;

数据库会将提取出的所有学生姓名按照字母顺序(默认升序排列)进行重新排列

二、按多个列排列

SELECT 列名1,列名2,列名3

FROM 表名

ORDER BY 列名2,列名3;

当需要按照多个列进行排序时,可以在 ORDER BY 子句中列出这些列。先按照第一个列进行排序,如果该列的值相同,再按照第二个列进行排序,以此类推。

比如在一个“orders”表中,包含“order_id”(订单编号)、“customer_id”(客户编号)、“order_date”(订单日期)等列。如果想要先按照客户编号升序排列,对于相同客户编号的订单再按照订单日期升序排列,可以使用:

SELECT order_id,customer_id,order_date
FROM orders
ORDER BY customer_id, order_date;

三、按列位置排序

SELECT 列名1,列名2,列名3

FROM 表名

ORDER BY 2,3;

这里是按照列的位置进行排序,数字代表在 SELECT 语句中列的顺序。先按照第二个列进行排序,再按照第三个列进行排序。

例如,有一个“products”表,包含“product_id”(产品编号)、“product_name”(产品名称)、“product_price”(产品价格)等列。如果想要按照产品名称排序,按照产品价格排序,可以使用:

SELECT product_id, product_name, product_price
FROM products
ORDER BY 2,3;

四、指定排列方向

SELECT 列名1,列名2,列名3

FROM 表名

ORDER BY 列名2

DESC,列名3;

可以通过在列名后面添加 DESC(降序)或 ASC(升序,默认情况下如果不指定即为升序)来指定排序的方向。

在这个例子中,先按照列名 2 进行降序排列,对于列名 2 相同的值,再按照列名 3 进行升序排列(因为没有指定列名 3 的排序方向,默认为升序)。

比如在一个“scores”表中,包含“student_id”(学生学号)、“math_score”(数学成绩)、“english_score”(英语成绩)等列。如果想要先按照数学成绩降序排列,对于数学成绩相同的学生再按照英语成绩升序排列,可以使用:

SELECT student_id, math_score, english_score
FROM scores
ORDER BY math_score DESC, english_score;

练习题:

1.编写SQL语句,从Customers中检索所有的顾客名称(cust_names),并按从Z到A的顺序显示结果。
2.编写SQL语句,从Orders表中检索顾客ID(cust_id)和订单号(order_num),并先按顾客ID对结果进行排序,再按订单日期倒序排列。
3.显然,我们的虚拟商店更喜欢出售比较贵的物品,而且这类物品有很多。编写SQL语句,显示OrderItems表中的数量和价格(item_price),并按数量由多到少、价格由高到低排序。
4.下面的SQL语句有问题吗?(尝试在不运行的情况下指出。)
​SELECT vend_name,
​​​​​​FROM Vendors
​​​​​​ORDER vend_name DESC;​​

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值