文章目录

  • 什么是子查询
  • where 嵌套子查询
    • 简单版
    • in嵌套查询
    • some嵌套查询
    • all嵌套查询
    • exists嵌套查询

什么是子查询

有如下表,现要求编写sql语句,查看年龄比“李斯文”小的学生,要求显示这些学生的信息 ,红框中的学生是比李斯文年龄小的学生。

  • 普通方法:

第一步:查询得到“李斯文”的出生日期

SELECT bornDate from student
where studentName="李斯文"
;  ->1993-07-03

第二步:利用WHERE语句,筛选出生日期比“李斯文”大的学生

SELECT * from student
where bornDate >'1993-07-03'
;
  • 子查询方法
    将第二步需要的1993-07-03,用第一步中查询的语句代替,代码如下:
SELECT * from student
where bornDate >(SELECT bornDate from student
where studentName="李斯文")
;

where 嵌套子查询

简单版

  • 找出比“孙权”大的人
select name,age from person
where age > (select age from person where name = '孙权')

输出结果为

in嵌套查询

  • 找出魏国的人
select name from person
where countryid in
(
select countryid from country
where countryname = '魏国'
)

输出结果为

some嵌套查询

  • 语法
    <表达式>{ =|<>|!=|>|>=|!>|<|<=|!<}some(子查询)

some在sql中的逻辑运算符号,如果在一系列比较中,有些值为True,那么结果就为True。

  • 找出魏国的人
select name from person
where countryid = some       --用等号和以下查询到的值比较,如果与其中一个相等,就返回
(
select countryid from country
where countryname = '魏国'
)
  • 结果如下

all嵌套查询

  • 语法
    <表达式>{ =|<>|!=|>|>=|!>|<|<=|!<}all(子查询)

all是sql中的逻辑运算符好,如果一系列的比较都为true,那么结果才能为true。

  • 返回大于“魏国”的id的人
select name from person
where countryid > all   --当countryid大于以下返回的所有id,此结果才为True,此结果才返回
(
select countryid from country
where countryname = '魏国'
)

结果

exists嵌套查询

  • 语法

    exists 子查询

exists是sql中的逻辑运算符号。如果子查询有结果集返回,那么就为True。exists代表“存在”的意义,它只查找满足条件的那些记录。一旦找到第一个匹配的记录后,就马上停止查找。

但是如果子查询中因为加了条件而没有结果集返回,则主语句就不执行了:

SELECT * FROM Person
WHERE exists
(
SELECT * FROM Person
WHERE Person_Id = 100    --如果不存在Person_Id的记录,则子查询没有结果集返回,主语句不执行
)

参考:https://www.cnblogs.com/glassysky/p/11559082.html

Mysql基础入门(五)子查询相关推荐

  1. MySQL基础篇:子查询

    文章目录 概述 where型子查询 from型子查询 EXISTS型子查询 复制表子查询 概述 在某些情况下,当进行一个查询时,需要的条件或数据要用另一个select语句的结果,这个时候,就要用到** ...

  2. 【MySQL】实验五 子查询

    文章目录 1. 查询商品类别名称为"一体机"."台式机"两类商品的信息 2. 查询商品类别名称为"一体机"."台式机"两 ...

  3. MySQL入门 (九) : 子查询 Subquery

    1 一个叙述中的查询叙述 子查询(subquery)是一种很常见的应用,不论是查询.新增.修改或删除都有可能出现. 子查询是一个放在左右刮号中的「SELECT」叙述,而这个查询叙述会放在另一个SQL叙 ...

  4. MySQL基础入门【3】

    文章目录 13 补充知识,查询结果的去重 14 连接查询 14.1 什么是连接查询? 14.2 连接查询的分类? 14.3 基础知识 补充,表的别名 14.4 内连接 等值连接 非等值连接 自连接 1 ...

  5. 自己总结的MySQL基础入门知识,附思维导图

    第一次写博文,问题点可能比较多,辛苦大家帮忙指正,感谢大家. MySQL基础入门知识 前言 一.数据库基础知识 1.什么是数据库 2.数据库的分类 3.数据库的常用语言 4.数据库的常用操作方式 5. ...

  6. Mysql 知行必会 “子查询”

    Mysql 知行必会 "子查询" 每博一文案 后半生看透了人心,也看透了这世间所有的得失,不值得的人,不再 托付真心,不值得的感情,不会苦苦挽留,这世上有太多的人, 人前口服蜜饯, ...

  7. MySQL 基础 (一)- 查询语句

    MySQL 基础入门 Day2 MySQL 基础 (一)- 查询语句 一.学习内容 1. 导入示例数据库 1.1 MySQL示例数据库结构 2. SQL是什么?MySQL是什么? 2.1 SQL 2. ...

  8. 罗马音平假名中文可复制_日语零基础入门五十音,日语零基础五十音图表

    日语零基础入门五十音,日语入门的最基本要求就是记住五十音图,但是这个记住不仅是你能背下来或是默写下来.而是你需对号入座! 下面是一张五十音图表. 即每个假名单独拿出来你要立马反应出来怎么读.其重要性甚 ...

  9. left join on多表关联_资深DBA整理MySQL基础知识三:迅速理解MySQL的关联和子查询...

    接上篇: 上篇主要介绍select的基本的构成,和一些简单常用条件语句.这篇着重说几种常用的多表关联关系. 前面入门只说了一种表的简单查询.但在实际工作几乎不会出现单表操作的情况,大多数还是多表的连接 ...

最新文章

  1. 机会的度量:概率和分布
  2. python数据分析的主要流程-用Python语言做数据分析基本思路和流程
  3. Kosaraju 算法查找强连通分支
  4. Java参数详解(转载)
  5. CAN 总线 之七 BOSCH CAN 位时序 和 同步
  6. .NET Core中的一个接口多种实现的依赖注入与动态选择
  7. matlab resample,resample matlab实现
  8. codeforces MUH and Important Things
  9. 《大数据》2015年第2期“前沿”——大数据技术发展的十个前沿方向(上)
  10. 服务器如何启动运行,如何在服务器系统启动或重新启动时执行命令或脚本
  11. oppo 手机侧滑快捷菜单_OPPO十年进化论,从A·V厂到国内第二
  12. Java 8中用java.time.LocalDate全面代替老旧的Date,Calendar类
  13. python脚本(比较两个Excel表格的不同并标记)
  14. 抢红包算法 c++_【优化求解】基于粒子群算法的光伏电池MPPT控制策略
  15. android电视盒子蓝牙遥控器app,Android TV 智能电视/盒子 APP 开发焦点控制 两种方法实例...
  16. [渝粤教育] 中央财经大学 宏观经济学 参考 资料
  17. C语言中do while用法
  18. 无敌python爬虫教程学习笔记(一)
  19. 用selenium模拟登录豆瓣
  20. 利用Glide 对设备上的图片进行压缩并保存

热门文章

  1. 干货分享 | Swift在淘系技术的演进历程
  2. 转载: 中国大部分程序员的通病
  3. 上班第一天总结(以装环境为主)
  4. “好像”还是“好象”
  5. 【Java基础】· 集合习题详解
  6. zjs-my-diary-20191227
  7. java.sql.SQLException: 不支持的字符集 (在类路径中添加 orai18n.jar): ZHS16GBK
  8. 步进电机基础(2.2)- 转子的分类与结构(VR型步进电机和HB型步进电机)
  9. R语言升级版本和迁移老版本中的包到新版本上的一些问题
  10. a java runtime enviroment jre or java de,手把手教你启动报错:A java Runtime Environment(JRE)…...