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

如:

SELECT * FROM t1 WHERE col1 = (SELECT col2 FROM t2);
其中 SELECT * FROM t1,称为Outer Query/Outer Statement
SELECT col2 FROM t2,称为SubQuery

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

子查询可以包含多个关键字或条件,如DISTINCT/GROUP BY/ORDER BY/LIMIT/函数等;

子查询的外层查询可以是:SELECT, INSERT, UPDATE, SET 或Do。

子查询可以返回标量、一行、一列或子查询。

  • 使用比较运算符的子查询

    • 使用比较运算符的子查询:=, >, <, >=, <=, <>, !=, <=>
    • 语法结构:operator comparison——operator SubQuery
    • ANY, SOME, ALL关键字
  • 使用[NOT] IN的子查询
    • operand comparison_operator [NOT] IN (subquery) = ANY 运算符与IN等效
    • !=ALL 或 <>ALL 运算符与NOT IN等效。

多表更新

  • 基本命令:
  • UPDATE table_references
    SET col_name1={expr1|DEFAULT}
    ...
    [WHERE where_condition]//表的参照关系
    table_reference
    {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN}
    table_reference
    ON condition_expr //For example:
    UPDATE tdb_goods INNER JOIN tdb_goods_cates ON goods_cate=cate_name
    SET goods_cate=cate_id;

多表连接

  • MySQL在SELECT语句、多表更新、多表删除语句中支持JOIN操作。
  • 基本命令:
  • table_reference
    {[INNER | CROSS] JOIN | {LEFT | RIGHT} [OUTER] JOIN}
    table_reference
    ON condition_expr table_reference
    tbl_name [[AS] alias] | table_subquery [AS] alias数据表可以使用tbl_name AS alias_name 或 tbl_name alias_name 赋予别名。
    table_subquery可以作为子查询使用在FROM子句中,这样的子查询必须为其服务别名。

  • INNER JOIN,内连接,在MySQL中,JOIN,CROSS JOIN和INNER JOIN是等价的。
  • LEFT [OUTER] JOIN,左外连接
    • A LEFT JOIN B join_condition
    • 数据表B的结果集依赖于数据表A;
    • 左外连接条件决定如何检索数据表B(在没有WHERE条件的情况下)
  • RIGHT [OUTER] JOIN,右外连接
    • 通常使用ON关键字来设定条件;
    • 使用WHERE关键字来进行结果集记录的过滤。
  • 表的自身连接 多表删除:通过一个表模拟多个表,删除表中的重复记录
    • DELETE tbl_name[.*] [, tbl_name[.*]] ...
      FROM table_references
      [WHERE where_condition]//For example:
      DELETE t1 FROM tdb_goods AS t1 LEFT JOIN (SELECT goods_id, goods_name FROM tdb_goods GROUP BY goods_name HAVING (COUNT(goods_name) >=2)) AS t2 ON t1.goods_name=t2.goods_name WHERE t1.goods_id > t2.goods_id;

转载于:https://www.cnblogs.com/little-YTMM/p/5428669.html

MySQL(五) —— 子查询相关推荐

  1. MySQL 行子查询

    MySQL 行子查询 行子查询是指子查询返回的结果集是一行 N 列,该子查询的结果通常是对表的某行数据进行查询而返回的结果集. 一个行子查询的例子如下: SELECT * FROM table1 WH ...

  2. 浅谈mysql的子查询

    2019独角兽企业重金招聘Python工程师标准>>> mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,mysql在处理子查 ...

  3. 生产库中遇到mysql的子查询

    使用过oracle或者其他关系数据库的DBA或者开发人员都有这样的经验,在子查询上都认为数据库已经做过优化,能够很好的选择驱动表执行,然后在把该经验移植到mysql数据库上,但是不幸的是,mysql在 ...

  4. mysql怎么子查询_在mysql中如何进行子查询?

    在mysql中,子查询是指将一个查询语句嵌套在另一个查询语句中,可以在SELECT.UPDATE和 DELETE语句中配合WHERE子句进行实现,WHERE子句中语法格式为"WHERE (另 ...

  5. MySQL子查询的优缺点_浅谈mysql的子查询

    浅谈mysql的子查询 mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信息,mysql在处理子查询的时候,会 ...

  6. Mysql之子查询20221016

    Mysql之子查询20221016 子查询案例: 子查询案例: 子查询:谁的工资比Abel的高 SELECT last_name,salary FROM employees WHERE salary ...

  7. mysql表子查询(嵌套查询)

    mysql表子查询(嵌套查询): 1.什么是子查询: 子查询是指嵌入在其它 sql 语句中的 select 语句,也叫嵌套查询 -- 如何显示与 SMITH 同一部门的所有员工? -- 1.先查出sm ...

  8. mysql嵌套子查询索引_SQL 子查询,索引优化

    场景 索引优化 单列索引 多列索引 索引覆盖 排序 场景 我用的数据库是mysql5.6,下面简单的介绍下场景 课程表 create table Course( c_id int PRIMARY KE ...

  9. MySQL 嵌套子查询 with子句 from子查询 in子查询 join子查询

    一.适用场景和方法 (1)适用场景 考虑查询过程中是否存在以下情况: 查询某些数据时需要分组才能得到,某些数据不需要分组就能得到或者分组条件不同: 查询某些数据时需要where条件,某些列不需要whe ...

最新文章

  1. sqlserver Distributed Transaction 分布式事务
  2. JAVA日期加减运算
  3. 原生JS实现简单的淘宝放大镜效果
  4. [leetcode] 5.最长回文子串
  5. 表达式* ptr ++和++ * ptr是否相同?
  6. Java中Integer类型的整数值的大小比较
  7. JS 简易的计算器
  8. 10 Seconds Count Down
  9. 移动设备尺寸规范汇总(转)
  10. HackerRank - Stock Maximize
  11. 64qam星座图matlab,基于MATLAB的QAM 眼图和星座图
  12. 游戏测试永乐大典——服务端架构,游戏服务器架构,游戏数据库设计
  13. QQ邮箱代收Gmail邮件,微信第一时间通知Gmail新收邮件
  14. nvidia_tao实现lpr训练
  15. 微型计算机的什么接口主要作为打印机接口,微机接口技术及应用_习题集(含答案)...
  16. ESP8266连接中国移动ONENET物联网平台TCP透传实现WIFI远程控制
  17. IoT上的缓冲区溢出漏洞
  18. 如何调整MATLAB画布大小?
  19. js reduce 累加数组里对象某个属性的和 NaN
  20. 硬盘开启NCQ功能全解

热门文章

  1. linux带宽最小的远程桌面,【图片】linux下哪种远程桌面服务最快?_linux吧_百度贴吧...
  2. 基于Matlab的模拟通信实验平台设计,【通信原理仿真实验】通信原理虚拟实验仿真平台的设计和实现_玛雅作文网...
  3. c++ 优先队列_C/C++数据结构:队列结构最全解析!带你零基础入门队列结构
  4. 心跳检测以及应用层心跳包机制设计
  5. leetcode 349. 两个数组的交集 思考分析
  6. ASCII码排序(C++)
  7. ffplay源码(版本:ffmpeg-4.2.1)
  8. 横向全屏滑动插件_【案例】JQuery横向手风琴图片轮播切换代码
  9. 蒙特卡洛法求圆周率100亿数据
  10. 文件描述符和fcntl及阻塞非阻塞