请先导入myemployees数据库 执行SQL脚本文件导入数据库

in mysql 排序 查询条件 mysql的排序查询_升序

按照某个或者某几个字段进行排序输出查找得到的结果。

语法:
select 查询列表
from 表名
[where  筛选条件](可选)
order by 排序的字段或表达式;

特点:
1、asc代表的是升序,可以省略,desc代表的是降序
2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段
3、order by子句在查询语句的最后面,除了limit子句(后面会介绍)

1、按单个字段排序

比如:按照工资降序排列(可能会扎了某些人的心)

USE myemployees;
SELECT * 
FROM employees 
#按照工资降序排序
ORDER BY salary DESC;

in mysql 排序 查询条件 mysql的排序查询_字符串_02

2、添加筛选条件再排序

比如:查询工资超过>=9000的员工信息,并按员工编号降序。

USE myemployees;
SELECT *
FROM employees
WHERE salary >= 90
ORDER BY employee_id DESC;

in mysql 排序 查询条件 mysql的排序查询_字符串_03

3、按表达式排序

比如:查询员工信息 按年薪降序。

USE myemployees;
#首先年薪的计算公式为salary*12*(1+commission_pct),其中commission_pct是奖金率,12个月
#但是由于有些人没有奖金,即commission_pct为null,所以引入IFNULL函数,如果commission_pct是null,则返回0替代
SELECT *,salary*12*(1+IFNULL(commission_pct,0))
FROM employees
ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;

in mysql 排序 查询条件 mysql的排序查询_字符串_04

4、按别名排序

比如:查询员工信息 按年薪别名升序。

USE myemployees;
#首先年薪的计算公式为salary*12*(1+commission_pct),其中commission_pct是奖金率,12个月
#但是由于有些人没有奖金,即commission_pct为null,所以引入IFNULL函数,如果commission_pct是null,则返回0替代
SELECT *, salary*12*(1+IFNULL(commission_pct,0)) 年薪
FROM employees
ORDER BY 年薪 ASC;

in mysql 排序 查询条件 mysql的排序查询_升序_05

5、按函数排序

比如:查询员工名,工资,并且按名字的长度升序

USE myemployees;
#LENGTH计算字符串的长度
SELECT LENGTH(last_name),last_name, salary
FROM employees
ORDER BY LENGTH(last_name) ASC;

in mysql 排序 查询条件 mysql的排序查询_升序_06

6、按多个字段排序

比如:查询员工姓名、工资、employee_id,要求先按工资降序,再按employee_id升序

USE myemployees;
SELECT last_name, salary, employee_id
FROM employees
ORDER BY salary DESC, employee_id ASC;

in mysql 排序 查询条件 mysql的排序查询_in mysql 排序 查询条件_07

测试:

1、选择工资不在5000到10000的员工的姓名和工资,按工资升序。

USE myemployees;
SELECT last_name,salary
FROM employees
WHERE salary NOT BETWEEN 5000 AND 10000
ORDER BY salary ASC;

in mysql 排序 查询条件 mysql的排序查询_升序_08


2、查询姓名中包含字符h的员工信息,并先按邮箱的字节数降序,再按部门号升序。

USE myemployees;
#LENGTH返回字符串的长度
SELECT *, LENGTH(email)
FROM employees
WHERE last_name LIKE '%h%'
ORDER BY LENGTH(email) DESC, department_id ASC;

in mysql 排序 查询条件 mysql的排序查询_字段_09