按多个列排序
在数据库查询中,经常需要按不止一个列进行数据排序。例如,如果要显示雇员名单,可能希望按姓和名排序(首先按姓排序,然后在每个姓中再按名排序)。如果多个雇员有相同的姓,这样做很有用。
要按多个列排序,只需指定这些列名,列名之间用逗号分开即可(就像选择多个列时那样)。
示例
下面的检索3个列,并按其中两个列对结果进行排序——首先按价格,然后按名称排序。
输入
SELECT prod_id, prod_price, prod_name
FROM Products
ORDER BY prod_price, prod_name;
输出
prod_id | prod_price | prod_name
--------|------------|-----------
BNBG02 | 3.4900 | Bird bean bag toy
BNBG01 | 3.4900 | Fish bean bag toy
BNBG03 | 3.4900 | Rabbit bean bag toy
RGAN01 | 4.9900 | Raggedy Ann
BRO1 | 5.9900 | 8 inch teddy bear
BRO2 | 8.9900 | 12 inch teddy bear
RYL01 | 9.4900 | King doll
RYL02 | 9.4900 | Queen doll
BR03 | 11.9900 | 18 inch teddy bear
重要的是理解在按多个列排序时,排序的顺序完全按规定进行。换句话说,对于上述例子中的输出,仅在多个行具有相同的prod_price
值时才对产品按prod_name
进行排序。如果prod_price
列中的值都是唯一的,则不会按prod_name
排序。
示例
学生成绩的表Grades
,如下:
CREATE TABLE Grades (
student_id INT,
course_id INT,
semester VARCHAR(10),
score DECIMAL(4, 2)
);
INSERT INTO Grades (student_id, course_id, semester, score) VALUES
(1, 101, 'Fall2023', 88.50),
(2, 101, 'Fall2023', 92.00),
(1, 102, 'Spring2024', 85.00),
(2, 102, 'Spring2024', 95.00),
(3, 101, 'Fall2023', 78.00),
(3, 102, 'Spring2024', 82.50);
按单一列排序:
- 按成绩
score
降序排序:
SELECT student_id, course_id, semester, score FROM Grades ORDER BY score DESC;
- 按成绩
```
student_id | course_id | semester | score
-----------|-----------|-----------|------
2 | 102 | Spring2024| 95.00
2 | 101 | Fall2023 | 92.00
1 | 101 | Fall2023 | 88.50
1 | 102 | Spring2024| 85.00
3 | 102 | Spring2024| 82.50
3 | 101 | Fall2023 | 78.00
```
按多列排序:
- 先按学期
semester
升序排序,然后按成绩score
降序排序:
SELECT student_id, course_id, semester, score FROM Grades ORDER BY semester ASC, score DESC;
- 先按学期
```
student_id | course_id | semester | score
-----------|-----------|-----------|------
2 | 101 | Fall2023 | 92.00
1 | 101 | Fall2023 | 88.50
3 | 101 | Fall2023 | 78.00
2 | 102 | Spring2024| 95.00
1 | 102 | Spring2024| 85.00
3 | 102 | Spring2024| 82.50
```
按学期和课程ID排序:
- 先按学期
semester
升序排序,然后按课程IDcourse_id
升序排序:
SELECT student_id, course_id, semester, score FROM Grades ORDER BY semester ASC, course_id ASC;
- 先按学期
student_id | course_id | semester | score
-----------|-----------|-----------|------
1 | 101 | Fall2023 | 88.50
2 | 101 | Fall2023 | 92.00
3 | 101 | Fall2023 | 78.00
1 | 102 | Spring2024| 85.00
2 | 102 | Spring2024| 95.00
3 | 102 | Spring2024| 82.50
按学期、成绩和学生ID排序:
- 先按学期
semester
升序排序,然后按成绩score
降序排序,再按学生IDstudent_id
升序排序:
SELECT student_id, course_id, semester, score FROM Grades ORDER BY semester ASC, score DESC, student_id ASC;
- 先按学期
```
student_id | course_id | semester | score
-----------|-----------|-----------|------
2 | 101 | Fall2023 | 92.00
1 | 101 | Fall2023 | 88.50
3 | 101 | Fall2023 | 78.00
2 | 102 | Spring2024| 95.00
1 | 102 | Spring2024| 85.00
3 | 102 | Spring2024| 82.50
```
非常感谢您读到这里!如果您觉得这篇文章对您有帮助,可以关注一下博主。关注后,您将第一时间获得最新的AI、云计算、运维(Linux、数据库,容器等)技术,以及更多实用的技能干货。
无论你是AI新手还是AI专家,学习最前沿的AI技术,AI创富俱乐部你值得拥有!
本文由mdnice多平台发布
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。