zoukankan      html  css  js  c++  java
  • 第四节:排序查询

    一、排序查询

      1、语法

    select 查询列表 
    from 表名
    【where 筛选条件】
    order by 排序列表 【asc | desc】;
    

        asc 升序,默认值,可以省略;desc 降序;

      2、特点

      (1)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 hiredate ASC ;
    

      3、按表达式排序

        要求:按年薪的高低显示员工的信息和年薪

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

      4、按照别名排序

        要求:按年薪的高低显示员工的信息和年薪

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

      5、按函数排序

        要求:按姓名的长度显示员工的姓名和工资

    SELECT 
      LENGTH(last_name) 字节长度,
      last_name,
      salary 
    FROM
      employees 
    ORDER BY LENGTH(last_name) ;

          也可以根据别名排序:

    SELECT 
      LENGTH(last_name) 字节长度,
      last_name,
      salary 
    FROM
      employees 
    ORDER BY 字节长度 ;
    

      

      6、按多个字段排序

        要求:查询员工信息,要求先按照工资降序,再按照员工编号升序

    SELECT 
      * 
    FROM
      employees 
    ORDER BY salary DESC,
      employee_id ASC ;
    

    三、练习

      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 ;
    

      

  • 相关阅读:
    前人风采
    【C++ Primer 第16章】1. 定义模板 (一)
    CCF CSP认证考试试题
    【C++ Primer 第11章】4. 无序容器
    【C++ Primer 第11章 练习答案】2. 关联容器操作
    【C++ Primer 第11章】2. 关联容器操作
    dxRatingControl使用
    dxRangeTrackBar使用教程
    UniConnectDialog使用
    Delphi窗体置顶及失去焦点后取得焦点
  • 原文地址:https://www.cnblogs.com/niujifei/p/14885422.html
Copyright © 2011-2022 走看看