1.语法:
order by {列名 | 表达式 | 别名} [asc | desc ](不写表达式默认升序)
- asc:升序(由小到大),默认值,desc:降序(由大到小)。
- order by 列1,列2,表示:先按照列1排序 ,如果列1的值相同,在按照列2的进行排序 。
select *
FROM emp
ORDER BY sal,empno desc
- 执行顺序:from、where、select、order by。
- mysql中,null为最小。
- 可以按照select后列的顺序号排序,顺序号从1开始。
- 注意:排序的列可以不出现在select后。
①查询部门在20或30的员工姓名,部门编号,并按照工资升序排序
SELECT ename,deptno
FROM emp
WHERE deptno IN(20,30)
ORDER BY sal ASC
②查询工资在2000-3000之间,部门不在10号的员工姓名,部门编号,工资,并按照部门升序,工资降序排序。
SELECT ename,deptno,sal
FROM emp
WHERE sal BETWEEN 2000 and 3000 and
NOT deptno = 10
ORDER BY deptno ASC,sal DESC
③查询入职日期在82-83年之间,职位一sales或者man开头的员工姓名,入职日期,职位,并按照日期降序排序
SELECT ename,hiredate,job
FROM emp
WHERE hiredate BETWEEN '1982-01-01' and '1983-12-31' AND
(job LIKE 'sales%' or job like 'man%')
ORDER BY hiredate DESC