• 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='赵四');
             
        
           
        
  • 相关阅读:
    #《Essential C++》读书笔记# 第四章 基于对象的编程风格
    visual studio 2019:error c2760
    #《Essential C++》读书笔记# 第三章 泛型编程风格
    #《Essential C++》读书笔记# 第二章 面向过程的编程风格
    #《Essential C++》读书笔记# 第一章 C++ 编程基础
    Hello, world!
    Linux基础(五)Linux下的文件操作
    Linux基础(四)新手大礼包,Linux需要掌握的基础命令大合集
    Linux基础(三)安装Linux系统中遇到的问题
    Linux基础(二)在vmwaer虚拟机 上安装Linux操作系统
  • 原文地址:https://www.cnblogs.com/zhuhaofeng/p/15739156.html
Copyright © 2020-2023  润新知