zoukankan      html  css  js  c++  java
  • 联合分组与子查询与all/any区间修饰条件

    联合分组

    # 数据来源:在单表emp下
    
    # 联合分组:按多个字段综合结果进行分组
    
    # 按 area与port组合后的结果进行分组,只有组合后的结果还一致,才认为是一组
    select group_concat(name),area,port from emp group by area,port;
    

    子查询

    # 增:insert into 表 select子查询
    # 删:delete from 表 条件是select子查询(表不能与delete表相同)
    # 查:select 字段 from 表 条件是select子查询
    # 改:update 表 set 字段=值 条件是select子查询(表不能与update表相同)
    
    # 数据来源:在单表emp下
    
    # 子查询:将一条查询sql的结果作为另一条sql的条件
    
    # 思考:每个部门最高薪资的那个人所有信息
    
    # 子查询的sql
    select dep, max(salary) from emp group by dep;
    # 子查询 - 查
    select * from emp where (dep, salary) in (select dep, max(salary) from emp group by dep);
    
    # 将子查询转换为一张表
    # 创建一个存子查询数据的一张表
    create table t1(dep_name varchar(64), max_salary decimal(5,2));
    # 子查询 - 增
    insert into t1 select dep, max(salary) from emp group by dep;
    # 需求
    select name, dep_name, salary 
    from emp join t1 
    on emp.dep=t1.dep_name and emp.salary=t1.max_salary;
    
    # 子查询 - 改(update更新的表不能 与 子查询select的表同表)
    # 每个部门最大薪资+1
    update t1 set max_salary=max_salary+1;
    # 给t1额外增加一个新部门
    insert into t1 values ('打杂部', 100);
    # 子查询 - 改
    update t1 set max_salary=max_salary+1 where dep_name in (select distinct dep from emp);
    # 错误:update更新的表 与 子查询select的表 相同
    update t1 set max_salary=max_salary+1 where dep_name in (select distinct dep_name from t1);
    
    # 子查询 - 删
    delete from t1 where dep_name in (select distinct dep from emp);
    # 错误: delete删除的表 与 子查询select的表 相同
    delete from t1 where dep_name in (select distinct dep_name from t1);
    

    all与any:区间修饰条件

    # 语法规则
    # where id in (1, 2, 3) => id是1或2或3
    # where id not in (1, 2, 3) => id不是1,2,3
    # where salary < all(3, 6, 9) => salary必须小于所有情况(小于最小)
    # where salary > all(3, 6, 9) => salary必须大于所有情况(大于最大)
    # where salary < any(3, 6, 9) => salary只要小于一种情况(小于最大)
    # where salary > any(3, 6, 9) => salary只要大于一种情况(大于最小)
    in < > ()
    # 案例
    select * from emp where salary < all(select salary from emp where id>11);
    
  • 相关阅读:
    获得指定目录路径
    播放音乐(mciSendString)
    INotifyPropertyChanged接口
    从excel表格加载数据返回DataSet
    事件与委托
    .net中实现伪静态的学习小结
    今天开通博客了
    EasyUI后台管理系统学习四
    EasyUI后台管理系统学习三
    EasyUI后台管理系统学习二
  • 原文地址:https://www.cnblogs.com/aden668/p/11594594.html
Copyright © 2011-2022 走看看