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

    本文转自:https://blog.csdn.net/javacoder_juejue/article/details/83037917

    定义:

    指在一条select语句中,嵌入了另外一条select语句,那么被嵌入的select语句称之为子查询语句。

    当一个查询是另一个查询的条件时,称之为子查询。

    主查询:

    主要的查询对象,第一条select语句,确定的用户所有获取的数据目标(数据源),以及要具体得到的字段信息。

    子查询和主查询的关系: 

    1、 子查询是嵌入到主查询中的; 

    2、 子查询的辅助主查询的:要么作为条件,要么作为数据源 

    3、 子查询其实可以独立存在:是一条完整的select语句

    子查询分类:
    按功能分:

    标量子查询:子查询返回的结果是一个数据(一行一列)

    列子查询:返回的结果是一列(一列多行)

    行子查询:返回的结果是一行(一行多列)

    表子查询:返回的结果是多行多列(多行多列)

    Exists子查询:返回的结果1或者0(类似布尔操作)

    按位置分:

    Where子查询:子查询出现的位置在where条件中

    From子查询:子查询出现的位置在from数据源中(做数据源)

    标量子查询: 

    概念 

    标量子查询:子查询得到结果是一个数据(一行一列) 

    语法 

    基本语法:select * from 数据源 where 条件判断 =/<> (select 字段名 from 数据源 where 条件判断); //子查询得到的结果只有一个值 

    列子查询 

    概念 

    列子查询:子查询得到的结果是一列数据(一列多行)

    语法 

    基本语法: 

    主查询 where 条件 in (列子查询);

    行子查询
    概念
    行子查询:子查询返回的结果是一行多列

    行元素:字段元素是指一个字段对应的值,行元素对应的就是多个字段:多个字段合起来作为一个元素参与运算,把这种情况称之为行元素。

    语法

    基本语法:

    主查询 where 条件[(构造一个行元素)] = (行子查询);

    总结:

    已经学过三个子查询:常见的三个子查询

    标量子查询、列子查询和行子查询:都属于where子查询

    表子查询
    概念
    表子查询:子查询返回的结果是多行多列,表子查询与行子查询非常相似,只是行子查询需要产生行元素,而表子查询没有。

    行子查询是用于where条件判断:where子查询

    表子查询是用于from数据源:from子查询

    语法
    基本语法:

    Select 字段表 from (表子查询) as 别名 [where] [group by] [having] [order by] [limit]

    Exists子查询

    概念

    Exists子查询:查询返回的结果只有0或者1,1代表成立,0代表不成立

    语法

    基本语法:where exists(查询语句); //exists就是根据查询得到的结果进行判断:如果结果存在,那么返回1,否则返回0

    Where 1:永远为真

    子查询中特定关键字的使用
    In
    主查询 where 条件 in (列子查询);

    Any
    任意一个

    = any(列子查询):条件在查询结果中有任意一个匹配即可,等价于in

    <>any(列子查询):条件在查询结果中不等于任意一个

    1  =any(1,2,3)  ===== true

    1  <>any(1,2,3)  ===== true

    Some
    与any完全一样:在国外,some与any的正面含义一致,但是否定就大不相同:not any与not some

    开发者为了让对应的使用者不要在语法上纠结:重新设计了some

    All
    = all(列子查询):等于里面所有

    <>all(列子查询):不等于其中所有

    All数据展示

    如果对应的匹配字段有NULL,那么不参与匹配

  • 相关阅读:
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    OA办公系统 Springboot Activiti6 工作流 集成代码生成器 vue.js 前后分离 跨域
    java企业官网源码 自适应响应式 freemarker 静态引擎 SSM 框架
    java OA办公系统源码 Springboot Activiti工作流 vue.js 前后分离 集成代码生成器
    springcloud 项目源码 微服务 分布式 Activiti6 工作流 vue.js html 跨域 前后分离
    java 视频播放 弹幕技术 视频弹幕 视频截图 springmvc mybatis SSM
    最后阶段总结
    第二阶段学习总结
    第一阶段学习总结
  • 原文地址:https://www.cnblogs.com/qianslup/p/10953525.html
Copyright © 2011-2022 走看看