前面的话

  查询数据库,当查询条件比较复杂时,常常需要用到子查询。子查询(Subquery)是指出现在其他SQL语句内的SELECT子句。本文将详细介绍子查询

定义

  子查询(Subquery)是指出现在其他SQL语句内的SELECT子句

SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);

  其中,SELECT * FROM t1,称为外层查询(Outer Query/Outer Statement),SELECT col2 FROM t2,称为子查询(SubQuery)

  在使用子查询时,需要注意的是

  1、子查询指嵌套在查询内部,且必须始终出现在圆括号内

  2、子查询语句中可以包含多个关键字或条件,如DISTINCT、GROUP BY、ORDER BY、LIMIT、函数等

  3、子查询的外层查询可以是:SELECT、INSERT、UPDATE、SET或DO

  4、子查询返回值可以是:标量、一行、一列或者子查询

比较运算符

  使用比较符是其中一类子查询

operand comparison_operator subquery

  比较运算符包括=、!=、<>、<=> 、>、<、>=、<=

数据准备

  下载数据文件,建立数据库,数据表,并存入相应记录

  求所有电脑产品的平均价格,并且保留两位小数,AVG、MAX、MIN、COUNT、SUM为聚合函数

  [注意]AVG()是一个用来求平均值的函数

  查询所有价格大于平均价格的商品

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > 5391.30;

  通过子查询来实现相同的需求

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price > (SELECT ROUND(AVG(goods_price),2) FROM tdb_goods);

  查询类型为“超记本”的商品价格

  查询价格大于或等于"超级本"价格的商品

  系统提示错误,子查询返回的多于一行,因为子查询有3条结果,SELECT无法知道要大于子查询中3条结果中的哪一个。所以,这时就需要用到接下来要介绍的修饰关键字

修饰关键字

  修饰关键字包括ANY、SOME、ALL三个,如果子查询返回多个值时,可以使用它们

operand comparison_operator  ANY(子查询)
operand comparison_operator  SOME(子查询)
operand comparison_operator  ALL(子查询)

情况处理

  1、运算符为>或>=,使用ANY关键字时,表示大于子查询结果中的最小值

SELECT goods_id,goods_name,goods_price FROM tdb_goods WHERE goods_price >  ANY (SELECT goods_price FROM tdb_goods WHERE goods_cate = '超级本');

  由结果可知,返回的都大于4299的值,即最小值

  2、运算符为>或>=,使用ALL关键字时,表示大于子查询结果中的最大值

  3、运算符为<或<=,使用ANY或SOME关键字时,表示小于子查询结果中的最大值;使用ALL关键字时,表示小于子查询结果中的最小值

  4、运算符为=,使用ANY或SOME关键字时,表示等于子查询结果中的任意值;使用ALL关键字时,则返回空

[NOT]IN

operand comparison_operator [NOT] IN (subquery)

  第二种子查询是由IN 或 NOT IN引发的子查询,与比较运算符使用的方法基本相同

其中,= ANY 运算符与 IN 等效,!= ALL或 <> ALL运算符与 NOT IN 等效

[NOT] EXISTS

  第三种子查询是由EXISTS 或 NOT EXISTS引发的子查询。如果子查询返回任何行,EXISTS将返回TRUE;否则返回FALSE

存储查询结果

  我们可以把查询结果统一存储到一个新的数据表中,而不需要一条一条地录入

  下面,先创建一个“商品分类”空表

  然后,查询tdb_goods表的所有记录,并且按"类别"分组

  将分组结果写入到“商品分类”数据表中

INSERT [INTO] tbl_name [(col_name),...)] SELECT...;

前端学数据库之子查询相关推荐

  1. Oracle数据库:子查询、单行子查询,多行子查询,in,any,all语句,子查询的练习案例

    Oracle数据库:子查询.单行子查询,多行子查询,in,any,all语句,子查询的练习案例 2022找工作是学历.能力和运气的超强结合体,遇到寒冬,大厂不招人,可能很多算法学生都得去找开发,测开 ...

  2. Oracle数据库之子查询

    Oracle数据库总结: Oracle数据库之基本查询 Oracle数据库之过滤和排序 Oracle数据库之单行函数 Oracle数据库之多行函数 Oracle数据库之多表查询 SQL> 注意的 ...

  3. mysql数据库子查询的使用_MySQL数据库使用子查询方式更新数据优化及思考

    [环境介绍] 云数据库MySQL 5.7 [背景描述] 业务需要:需要对16370077的表数据进行更新部分数据操作 UPDATE P_MOXXXX_REXXXX SET FISAVAILABLE = ...

  4. mysql数据库表子查询语句_MySQL使用子查询教程

    #MYSQL#这是我MyySQL教程的第四篇了,可能对于一些大神来说这些都是小儿科,但是我还是相信这些东西会对一些人有帮助的,本篇主要会介绍上面是子查询以及如何使用它们.大概会从,什么是子查询,利用子 ...

  5. Oracle数据库多重子查询嵌套的坑

    在Oracle数据库中多重子查询的使用 代码如下: SELECT T.*, ROWNUM RNFROM (SELECT B.*,NVL(A.AMOUNT, 0) AMOUNT,V.FULLNAME,D ...

  6. 数据库之子查询四(多重,表复制)

    一.多重子查询 select teaID,teaName,age,sex,dept,profession from tteacher where dept= (select dept  from te ...

  7. Oracle 数据库的子查询(关联子查询)

    文章目录 一.子查询结果返回一个值(单列单行) 二.子查询结果返回多行(单列多行) 三.子查询结果返回多列多行 四.关联子查询 (一)子查询执行顺序 (二)exists 关键字 五.子查询总结 六.关 ...

  8. MySQL数据库11——子查询语句

    嵌入一个SELECT的语句称为子查询语句.虽然内连接也可以代替子查询,但是内连接效率不高.而且我个人觉得子查询更好理解. 单值子查询 果子查询返回单值,则可以使用关系运算符,例如,等于(=).不等于( ...

  9. 数据库05子查询,union

    子查询:select语句当中嵌套select语句,被嵌套的select语句是子查询. select-(select) from-(select) where-(select) 1.where子句中使用 ...

最新文章

  1. CUDA编程之快速入门
  2. 将keepalived添加到系统服务中
  3. 数据结构之基于顺序表的插入排序
  4. 【51nod】1239 欧拉函数之和 杜教筛
  5. .NET Core 3.0之深入源码理解Kestrel的集成与应用(一)
  6. Nginx进程间的通信机制
  7. Docker学习总结(56)——Docker-compose 基础知识温习
  8. TurboMail邮件系统为防垃圾邮件盗号提供专业方案
  9. Unity对接Steam SDK
  10. 十一这里最好玩啦!快来一起玩耍!
  11. DoTween动画系统
  12. think-cell 无法安装怎么解决?
  13. 百度Site App的uaredirect.js实现手机访问,自动跳转网站手机版
  14. w3c标准语言,W3C标准 - W3C中国
  15. 计算机网络第一章概论
  16. 作业 20181204-5 Final阶段贡献分配规则及实施
  17. JavaWeb学习(第一天)-1-HTML部分
  18. QGroundControl连接数传(3DR)失败
  19. 移动端滑动事件---实战笔记
  20. “全面集中管控”企业信息化体系建设的思考

热门文章

  1. 【网络编程】网络协议简析
  2. 小学期实践心得(2)
  3. 随机函数(Pascal入门)
  4. I.MX6 Manufacturing Tool V2 (MFGTool2) Emmc mksdcard-android.sh hacking
  5. MySQL(MariaDB)的 SSL 加密复制
  6. ThinkPHP RBAC官网的例子详解
  7. 《Cisco/H3C交换机高级配置与管理技术手册》目录
  8. CHD4B1(hadoop-0.23)实现NameNode HA安装配置
  9. 让Spring 3中jsp的数据对象使用懒加载(FetchType.LAZY)与Controller的JSR 303并存
  10. 请确保此代码文件中定义的类与“inherits”属性匹配.并且该类扩展的基类(例如 Page 或 UserControl)是正确...