zoukankan      html  css  js  c++  java
  • MySQL之子查询

    子查询

    测试数据
    create table emp (id int,name char(10),sex char,age int,dept_id int,job char(10),salary double);
    
    insert into emp values
    (1,"刘备","男",26,1,"总监",5800),
    (2,"张飞","男",24,1,"员工",3000),
    (3,"关羽","男",30,1,"员工",4000),
    (4,"孙权","男",25,2,"总监",6000),
    (5,"周瑜","男",22,2,"员工",5000),
    (6,"小乔","女",31,2,"员工",4000),
    (7,"曹操","男",19,3,"总监",10000),
    (8,"司马懿","男",24,3,"员工",6000);
    
    create table dept(id int primary key,name char(10));
    insert into dept values(1,"市场"),(2,"行政"),(3,"财务");
    
    1. 什么是子查询

    ​ 当一个查询是另一个查询的条件时,这个查询称之为子查询(内层查询)

    ​ 什么时候用?

    ​ 当查询需求比较复杂,一次性查询无法得到结果,需要多次查询时,

    ​ 例如:给出一个部门名称,需要获得该部门所有的员工信息

    ​ 分析:

    ​ 1.需要先确定部门的id

    ​ 2.然后才能通过id确定员工

    ​ 解决问题的方式是把一个复杂的问题拆分为若干个简单的问题

    2. 如何使用?

    首先明确子查询就是一个普通的查询,当一个查询需要作为子查询使用时,用括号包裹即可

    3. 需要注意

    ​ in中的子查询只能包含一个列

    ​ 例如:查询财务部有哪些人

    ​ 正确的写法:select name from emp where dept_id in (select id from dept where name = "财务");

    ​ 错误的写法:select name from emp where dept_id in (select * from dept where name = "财务");

    关键字:exists

    exists后跟子查询,子查询有结果是为True,没有结果时为False。为True时外层执行,为False外层不执行

    如何使用?

    select *from emp where exists (select *from emp where salary > 1000);

    前面 exists 后面
    如果 后面 查询有结果时,前面 才会执行

  • 相关阅读:
    "分段器"组件:<segment> —— 快应用组件库H-UI
    "页内标签"组件:<tab> —— 快应用组件库H-UI
    "标签栏"组件:<main-tab> —— 快应用组件库H-UI
    "导航栏"组件:<nav-bar> —— 快应用组件库H-UI
    如何配置pch文件
    如何清除Xcode8打印的系统日志
    iOS打包ipa给客户测试流程
    如何安装ipa文件
    如何获取苹果手机的UDID
    iOS键盘输入屏幕上移
  • 原文地址:https://www.cnblogs.com/plf-Jack/p/11189897.html
Copyright © 2011-2022 走看看