排序(order by)

MySQL从小白到总裁完整教程目录:https://blog.csdn.net/weixin_67859959/article/details/129334507?spm=1001.2014.3001.5502

语法格式:

select */列名 from 表名
order by 列名1 asc/desc, 列名2 asc/desc;

说明:

排序的目的:改变查询结果的返回顺序!

order by 就是排序关键字,表示按照什么规则排序

asc 表示升序,默认可以不写 desc 表示降序,若需要,不能省略

多列排序规则:先按照列名1进行排序(第1梯队),如果列名1的值相同,再按照列名2排序(第2梯队)!

案例:查询emp表中,员工编号(empno)、姓名(ename)、职位(job)、工资(sal)、入职时间(hiredate),根据工资(sal)降序排序。  

mysql> select empno, ename, job, sal, hiredate
    -> from emp
    -> order by sal desc;
+-------+--------+-----------+---------+------------+
| empno | ename  | job       | sal     | hiredate   |
+-------+--------+-----------+---------+------------+
|  7839 | king   | president | 5000.00 | 1983-05-20 |
|  7782 | clark  | manager   | 4450.00 | 1981-09-06 |
|  7950 | conter | manager   | 3500.00 | 1983-02-01 |
|  7566 | jones  | manager   | 3500.00 | 1980-04-02 |
|  7902 | ford   | analyst   | 3000.00 | 1981-12-03 |
|  7698 | blake  | manager   | 2850.00 | 1983-05-01 |
|  7499 | allen  | salesman  | 1600.00 | 1981-02-20 |
|  7844 | turner | salesman  | 1500.00 | 1981-06-10 |
|  7945 | mitter | clerk     | 1500.00 | 1983-06-23 |
|  7934 | miller | clerk     | 1300.00 | 1982-11-23 |
|  7521 | ward   | salesman  | 1250.00 | 1982-02-22 |
|  7654 | martin | salesman  | 1250.00 | 1981-09-28 |
|  7900 | james  | clerk     |  950.00 | 1981-12-03 |
|  7369 | smith  | clerk     |  800.00 | 1980-12-17 |
|  7210 | tianni | clerk     |  500.00 | 1980-04-20 |
+-------+--------+-----------+---------+------------+
15 rows in set (0.03 sec)

 排序(order by)_第1张图片

练习:查询emp表中,员工编号(empno)、姓名(ename)、职位(job)、工资(sal)、入职时间(hiredate),根据姓名(ename)升序排序。  

select empno, ename, job, sal, hiredate
from emp
order by ename asc;

# asc可以省略
select empno, ename, job, sal, hiredate
from emp
order by ename;

 

练习:查询student表中,学员姓名(sname)、分数(score)、班级(sclass),根据分数从大到小排序。

分析:从大到小,就是降序 desc

mysql> select sname, score, sclass
    -> from student
    -> order by score desc;
+------------+-------+--------+
| sname      | score | sclass |
+------------+-------+--------+
| rose       | 100.0 | 2年1班 |
| lucy       |  99.0 | 2年1班 |
| 猪八里     |  90.5 | 2年2班 |
| toms       |  90.0 | 1年1班 |
| 孙多多     |  90.0 | 2年3班 |
| 我吃西红柿 |  88.5 | 1年2班 |
| 烽火戏诸侯 |  82.5 | 1年1班 |
| 孙权       |  80.0 | 1年3班 |
| jack       |  78.0 | 2年1班 |
| 天蚕土豆丝 |  77.0 | 1年2班 |
| jack       |  75.0 | 1年3班 |
| 沙僧       |  70.5 | 1年3班 |
| james      |  67.0 | 2年2班 |
| 孙悟空     |  65.0 | 2年2班 |
| 唐家三少   |  65.0 | 1年1班 |
+------------+-------+--------+
15 rows in set (0.00 sec)

 案例:查询student表中,学员姓名(sname)、分数(score)、班级(sclass),先根据班级(sclass)升序排序,再根据分数(score)降序排序。

mysql> select sname, score, sclass
    -> from student
    -> order by sclass asc, score desc;
+------------+-------+--------+
| sname      | score | sclass |
+------------+-------+--------+
| toms       |  90.0 | 1年1班 |
| 烽火戏诸侯 |  82.5 | 1年1班 |
| 唐家三少   |  65.0 | 1年1班 |
| 我吃西红柿 |  88.5 | 1年2班 |
| 天蚕土豆丝 |  77.0 | 1年2班 |
| 孙权       |  80.0 | 1年3班 |
| jack       |  75.0 | 1年3班 |
| 沙僧       |  70.5 | 1年3班 |
| rose       | 100.0 | 2年1班 |
| lucy       |  99.0 | 2年1班 |
| jack       |  78.0 | 2年1班 |
| 猪八里     |  90.5 | 2年2班 |
| james      |  67.0 | 2年2班 |
| 孙悟空     |  65.0 | 2年2班 |
| 孙多多     |  90.0 | 2年3班 |
+------------+-------+--------+
15 rows in set (0.00 sec)

 练习:查询emp表中,员工姓名、职位、工资、部门编号,先根据部门编号降序排序,再根据工资升序排序。

mysql> select ename, job, sal, deptno
    -> from emp
    -> order by deptno desc, sal asc;
+--------+-----------+---------+--------+
| ename  | job       | sal     | deptno |
+--------+-----------+---------+--------+
| conter | manager   | 3500.00 |     90 |
| tianni | clerk     |  500.00 |     60 |
| mitter | clerk     | 1500.00 |     40 |
| james  | clerk     |  950.00 |     30 |
| ward   | salesman  | 1250.00 |     30 |
| martin | salesman  | 1250.00 |     30 |
| turner | salesman  | 1500.00 |     30 |
| allen  | salesman  | 1600.00 |     30 |
| blake  | manager   | 2850.00 |     30 |
| smith  | clerk     |  800.00 |     20 |
| ford   | analyst   | 3000.00 |     20 |
| jones  | manager   | 3500.00 |     20 |
| miller | clerk     | 1300.00 |     10 |
| clark  | manager   | 4450.00 |     10 |
| king   | president | 5000.00 |     10 |
+--------+-----------+---------+--------+
15 rows in set (0.00 sec)

 排序的目的:改变查询结果的返回顺序!

 

你可能感兴趣的:(数据库,mysql,sql)