MySQL(07)——排序查询

1. 语法

SELECT 
    查询列表
FROM
    表名
【WHERE
    筛选条件】
ORDER BY
    排序列表 【asc|desc】;

【】表示可选。

2. 特点

  • asc表示升序,desc表示降序。如果不写,默认升序。
  • order by子句中可以支持单个字段、多个字段、表达式、函数、别名
  • order by子句一般是放在查询语句最后面,limit子句除外

3. 示例

示例1:

#查询员工信息, 要求工资从高到低排序
SELECT * FROM 表名 ORDER BY salary DESC;
#查询员工信息, 要求工资从低到高排序(ASC可省略)
SELECT * FROM 表名 ORDER BY salary ASC;

示例2:

#查询部门编号>=90的员工信息,按入职时间的先后进行排序
SELECT 
    *
FROM
    表名
WHERE
    部门编号
ORDER BY
    入职时间 ASC;

示例3:

#按年薪高低显示员工信息和年薪
SELECT
    *,
    月薪*12*(1+IFNULL(奖金率, 0)) AS 年薪
FROM
    表名
ORDER BY
    月薪*12*(1+IFNULL(奖金率, 0)) DESC;

示例4:

#按年薪高低显示员工信息和年薪【别名】
SELECT
    *,
    月薪*12*(1+IFNULL(奖金率, 0)) AS 年薪
FROM
    表名
ORDER BY
    年薪 DESC;

示例5:

#按姓名的长度显示员工的姓名和工资【按函数排序】
SELECT 
    LENGTH(姓名) AS 字节长度, 
    员工名,
    工资
FROM
    表名
ORDER BY
    LENGTH(姓名) DESC;

示例6:

#查询员工信息,先按工资升序,再按员工编号降序【按多个字段排序】
SELECT 
    *
FROM     
    表名
ORDER BY
    工资 ASC,
    员工编号 DESC;

4. 练习

(1)查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序

SELECT
    员工名,
    部门号,
    月薪*12*(1+IFNULL(奖金率,0)) AS 年薪
FROM
    表名
ORDER BY
    年薪 DESC,
    员工名 ASC;

(2)选择工资不在8000到17000的员工的姓名和工资,按工资降序

SELECT 
    员工名,
    工资
FROM
    表名
WHERE
    工资 NOT BETWEEN 8000 AND 17000
ORDER BY
    工资 DESC;

(3)查询邮箱中包含e的员工信息,并按邮箱的字节数降序,再按部门号升序

SELECT
    *,
    LENGTH(邮箱名)
FROM
    表名
WHERE
    邮箱名 LIKE '%e%'
ORDER BY
    LENGTH(邮箱名) DESC,
    部门号 ASC;
  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值