MySQL必知必会_排序查询

  • 语法
  • select 查询列表
    from 表
    where 筛选条件
    order by 排序的字段|表达式|函数|别名 【asc}desc】
    
  • 特点

    • asc :升序,如果不写默认升序
    • desc:降序
  • 排序列表 支持 单个字段、多个字段、函数、表达式、别名

  • order by的位置一般放在查询语句的最后(除limit语句之外)

    #进阶3:排序查询
    /*
    语法:
    select 查询列表
    from 表名
    【where  筛选条件】
    order by 排序的字段或表达式;
    
    
    特点:
    1、asc代表的是升序,可以省略(不写则默认asc)
    desc代表的是降序
    
    2、order by子句可以支持 单个字段、别名、表达式、函数、多个字段
    
    3、order by子句在查询语句的最后面,除了limit子句
    
    */
    
    #1、按单个字段排序
    SELECT * FROM employees ORDER BY salary DESC;
    
    #2、添加筛选条件再排序
    
    #案例:查询部门编号>=90的员工信息,并按员工编号降序
    
    SELECT *
    FROM employees
    WHERE department_id>=90
    ORDER BY employee_id DESC;
    
    
    #3、按表达式排序
    #案例:查询员工信息 按年薪降序
    
    
    SELECT *,salary*12*(1+IFNULL(commission_pct,0))
    FROM employees
    ORDER BY salary*12*(1+IFNULL(commission_pct,0)) DESC;
    
    
    #4、按别名排序
    #案例:查询员工信息 按年薪升序
    
    SELECT *,salary*12*(1+IFNULL(commission_pct,0)) 年薪
    FROM employees
    ORDER BY 年薪 ASC;
    
    #5、按函数排序
    #案例:查询员工名,并且按名字的长度降序
    
    SELECT LENGTH(last_name)
    
    SELECT LENGTH(last_name) AS 字节长度,last_name 
    FROM employees
    ORDER BY LENGTH(last_name) DESC;
    
    #6、按多个字段排序
    
    #案例:查询员工信息,要求先按工资降序,再按employee_id升序,注意次序
    SELECT *
    FROM employees
    ORDER BY salary DESC,employee_id ASC;
    
    ##测试
    #选择工资不在8000到17000的员工的姓名和工资,按照工资降序 (注意如何筛选的)
    SELECT 
        last_name,
        salary
    FROM 
        employees
    WHERE
        salary NOT BETWEEN 8000 AND 17000
    ORDER BY salary DESC;
    
    ##查询邮箱中包含e的员工信息,并先按照邮箱的字节数降序,在按照部门号升序
    
    SELECT 
        *
    FROM
        employees
    WHERE
        email LIKE '%e%'
    ORDER BY LENGTH(email) DESC,department_id;
    
#####################案例讲解
    #1.查询员工的姓名和部门号和年薪,按年薪降序 按姓名升序

    SELECT last_name,department_id,salary*12*(1+IFNULL(commission_pct,0)) 年薪
    FROM employees
    ORDER BY 年薪 DESC,last_name ASC;


    #2.选择工资不在8000到17000的员工的姓名和工资,按工资降序
    SELECT last_name,salary
    FROM employees

    WHERE salary NOT BETWEEN 8000 AND 17000
    ORDER BY salary DESC;

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

    SELECT *,LENGTH(email)
    FROM employees
    WHERE email LIKE '%e%'
    ORDER BY LENGTH(email) DESC,department_id ASC;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值