• 5. 排序与分页


    5.1 排序数据

    排序用ORDER BY字句

    • ASC 升序(缺省值)
    • DESC 降序

    ORDER BY语句在SELECT语句的末尾

    单行排序

    # 单行排序就是依赖一列数据进行排序
    # 将员工的信息按照工资降序
    # 如果不写DESC就是默认升序排列
    SELECT * from employees ORDER BY salary DESC;
    

    多行排序

    # 多行排序可以按照出现的先后顺序进行排序,只有前一个值相同才会进行后一个排序
    # 按照员工的department_id升序排列,如果department_id相同按照工资的降序排列
    SELECT last_name, department_id, salary from employees ORDER BY department_id, salary DESC;
    

    5.2 分页

    数据量较大的时候,一次查询的数据比较多,查看不方便,因此需要分页查询。

    分页原理

    MySQL使用LIMIT实现分页

    LIMIT 位置偏移量, 显示行数
    
    • 位置偏移量是可选参数,不指定从第一条记录开始显示,第一条记录的位置偏移量是0
    • 显示行数是必要参数,指定显示行数
    # 显示前10条数据
    SELECT * FROM 表名 LIMIT 0,10;
    # 也可以写成
    SELECT * FROM 表名 LIMIT 10;
    
    # 显示11-20条记录
    SELECT * FROM 表名 LIMIT 10,10;
    

    MYSQL8中可以使用LIMIT 3 OFFSET 4, 和LIMIT 4, 3功能一样

    • LIMIT字句最好是放在SELECT语句的最后

    • 分页显示的公式:(当前页数 - 1) * 每页条数, 每页条数

      SELECT * FROM table
      LIMIT(PageNo - 1)*PageSize,PageSize;
      

    5.3 练习

    #1. 查询员工的姓名和部门号和年薪,按年薪降序,按姓名升序显示
    SELECT last_name, department_id, salary * 12 * (1 + IFNULL(commission_pct,0))as yearSalary
    FROM employees ORDER BY yearSalary DESC, last_name;
    
    #2. 选择工资不在 8000 到 17000 的员工的姓名和工资,按工资降序,显示第21到40位置的数据
    SELECT last_name, salaryFROM employees WHERE salary NOT BETWEEN 8000 AND 17000
    ORDER BY salary DESC LIMIT 20,20;
    
    #3. 查询邮箱中包含 e 的员工信息,并先按邮箱的字节数降序,再按部门号升序
    SELECT * FROM employees WHERE email LIKE "%e%"
    ORDER BY LENGTH(email) DESC,department_id;
    
  • 相关阅读:
    git 初始化与使用
    java解析webservice服务返回的xml
    计算时间天数
    XML和Java bean转换
    微信公众号-企业
    docker安装openldap
    webservice使用
    idea解决冲突插件
    Java--JSON嵌套JSON中带''字符的解决方式
    微信公众号开发
  • 原文地址:https://www.cnblogs.com/jiangblog/p/16403828.html
Copyright © 2020-2023  润新知