zoukankan      html  css  js  c++  java
  • mysql SQL语句中的子查询

    子查询
    
        create table department(
            id int primary key,
            name varchar(40)
        );
    
        create table employee(
            id int primary key auto_increment,
            name varchar(40),
            age int(2),
            dept_id int
        );
    
        INSERT INTO department values(1,'网络部');
        INSERT INTO department values(2,'媒体部');
        INSERT INTO department values(3,'研发部');
        INSERT INTO department values(5,'人事部');
    
        INSERT INTO employee values(null,'王红',20,1);
        INSERT INTO employee values(null,'李强',22,1);
        INSERT INTO employee values(null,'赵四',20,2);
        INSERT INTO employee values(null,'郝娟',20,4);
        
        1. 带IN关键字的子查询
           使用IN关键字进行子查询时,内层查询语句仅仅返回一个数据列,这个数据列中的值将供外层查询语句进行比较操作
           ~ 查询存在年龄为20岁的员工的部门
             select name from department where id in (select dept_id from employee where age=20);
           ~ 查询不存在年龄为20岁员工的部门
             select name from department where id not in (slect dept_id from employee where age=20);
             
        2. 带EXISTS关键字的子查询
            EXISTS关键字后面的参数可以时任意一个子查询,这个子查询的作用相当于测试,它不产生任何数据,只返回TRUE或FALSE,当返回值为TRUE时,外层查询才会执行
            ~ 查询employee表中是否存在年龄大于21岁的员工,如果存在,则查询department表中的所有记录
               select * from department where exists (select dept_id from employee where age>21);
               
        3. 使用ANY关键字子查询
            ANY关键字表示满足其中任意一个条件,它允许创建一个表达式对子查询的返回值列表进行比较,只要满足内层子查询中的任意一个比较条件,就返回一个结果作为外层查询条件
            ~ 使用带any关键字的子查询,查询满足条件的部门
              select * from department where id>any(select dept_id from employee);
              
        4. 带ALL关键字的子查询
            ALL 关键字与ANY有点类似,只不过带ALL关键字的子查询返回的结果需要同时满足所有内层查询条件
            ~ 使用带all关键字的子查询,查询满足条件的部门
            select * from department where id>all(select dept_id from employee);
        
        5. 带比较运算符的子查询
            ~ 使用带比较运算符的子查询,查询赵四是那个部门的员工
            select name from department where id=(select dept_id from employee where name='赵四');
             
        
           
        
  • 相关阅读:
    aspx,ascx和ashx使用小结
    修改CKFinder上传路径
    【python】如何在某.py文件中调用其他.py内的函数
    SpringMVC+hibernate4事务处理
    Hibernate执行原生SQL返回List<Map>类型结果集
    fastjson对Date的处理
    fastjson 的简单说明及使用
    字符串作为freemarker模板的简单实现例子
    Hibernate SQL 查询
    Spring整合Hibernate,Druid(Maven)
  • 原文地址:https://www.cnblogs.com/zhuhaofeng/p/15739156.html
Copyright © 2011-2022 走看看