查询(query):任何SQL 都是查询,但此术语一般指select 语句

子查询(subquery):嵌套在查询中的查询,MySQL4.1 引入对子查询的支持。

接下来得就比较有意思了,需要你对于表与表之间的关系有所了解,子查询一般用于跨表查询

一、基本使用

-- 多表查询,返回的订单编码,用于下一次查询
select cust_id,order_num from orders where order_num in(  select order_num from orderitems where prod_id='fb');

顺序的就是从里到外,主要就是查询里面套查询

注意:

  1、在select 语句中,子查询总是从内向外处理的,先执行的使括号内的查询语句,根据此查询返回的以IN 操作符要求格式传递到外部查询

  2、包含子查询的select 语句难以阅读和调试,可以 在书写的时候,分为多行并适当缩进

--  三个表查,这其中用到了外键的概念 主要就是 prod_id  order_num cust_id
select cust_id,cust_name,cust_contact from customers where cust_id in(        select cust_id from orders where order_num in(         select order_num from orderitems where prod_id='tnt2'));

上述,三条主要就是根据商品id 找到对应订单编码,根据订单编码找到客户id ,根据客户id 找到客户信息

注意:

  1、where 子句中使用子查询能够编写出功能很强并且很灵活的sql语句,而且对嵌套的子查询数目也没有限制,不过在实际中语句性能的限制,不能嵌套太多(虽然对子查询数目没有限制,但是由于性能原因,不要嵌套太多

  2、where 子句中使用子查询,应保证select 语句具有与where子句相同数目的列(通常子查询返回单个列并与单个列匹配,若有需要也可以使用多个列),从里到外一层一层

  3、虽然子查询一般与IN 操作符结合使用,但也可以与其他操作符结合使用

  4、使用子查询并不总是执行这种类型的数据检索的最有效方法

二、作为计算字段使用子查询

使用子查询的另一种方法就是创建计算字段,就是查询语句放在select 与from 之间

-- 显示customers 表中每个客户的订单总数,订单与相应的客户id 存储在order 表中select cust_name,cust_state,( select count(*) from orders where orders.cust_id = customers.cust_id) as orders   from customers order by cust_name;

此语句中 orders.cust_id = customers.cust_id 使用了完全限定,这个可以理解为 根据 orders表中的 cust_id 这个字段进行查询,值为 customers表中的cust_id 的有几个,

如下所示:

相关子查询(correlated subquery): 涉及外部查询的子查询。任何时候只要列名可能有多异性,就要使用这种语法(表名点 表中相关列名)。

如果不使用,就是没有完全限定

两个cust_id 在不同的表中,如果不用完全限定,mysql 假定你是对 order 表中的cust_id 进行自身比较,

返回的是order 表中的总数,所以必须限制有歧义性的列名。

注意:

  1、多表查询时要使用完全限定

  2、子查询并不是解决这种数据检索的最有效方法,有多种解决方案

  3、用子查询建立查询的最可靠的方法是逐渐 进行,与mysql 的处理方式相同,建议先测试内层查询,在根据返回的数据测试外层,确人正常后在嵌入到子查询,随牺牲了一点时间但保证了正确。

  4、子查询可以用在 select 与from 之间,也可以用在where 子句后

  5、查询顺序从内到外

mysql rand() 子查询_MySQL ------ 子查询(十三)相关推荐

  1. mysql商品查询_mysql的查询、子查询及连接查询(商城查询常用)

    一.mysql查询的五种子句 where(条件查询).having(筛选).group by(分组).order by(排序).limit(限制结果数) 1.where常用运算符: 比较运算符 > ...

  2. mysql 分号子查询_MySQL子查询详解

    子查询指一个查询语句嵌套在另一个查询语句内部的查询,这个特性从 MySQL 4.1 开始引入,在 SELECT 子句中先计算子查询,子查询结果作为外层另一个查询的过滤条件,查询可以基于一个表或者多个表 ...

  3. mysql对结果再查询_mysql 再查询结果的基础上查询(子查询)

    SELECT A.wx_name, A.wx_litpic, B . * FROM ( SELECT uid, COUNT( * ) AS daticishu FROM statements WHER ...

  4. mysql 优化子查询_MySQL子查询的优化

    一.MySQL子查询的位置当一个查询是另一个查询的子部分是,称之为子查询(查询语句中嵌套含有查询语句).子查询也是使用频率比较高的一种查询类型.因此,优化 一.MySQL子查询的位置 当一个查询是另一 ...

  5. mysql 子表_MySQL子查询,派生表和通用表达式

    一:子查询 1.介绍 在另一个查询(外部查询)中嵌套另一个查询语句(内部查询),并使用内部查询的结果值作为外部查询条件. 2.子查询在where中 SELECT customerNumber, che ...

  6. mysql 什么是子查询_MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 image.png 1. 什么是子查询? 子查询顾名思义就是在正常查询之前先查询出来一条数据或者一个表. 子 ...

  7. mysql数据库的查询_mysql数据库查询

    查询数据指从数据库中获取所需要的数据.查询数据是数据库操作中最常用,也是最重要的操作.用户可以根据自己对数据的需求,使用不同的查询方式.通过不同的查询方式,可以获得不同的数据.MySQL中是使用SEL ...

  8. mysql 内嵌查询_mysql嵌套查询_MySQL

    mysql嵌套查询_MySQL 一:创建ecs_goods表插入以下数据: +----------+------------------------------+--------+---------- ...

  9. mysql的复杂查询_mysql复杂查询

    所谓复杂查询,指涉及多个表.具有嵌套等复杂结构的查询.这里简要介绍典型的几种复杂查询格式. 一.连接查询 连接是区别关系与非关系系统的最重要的标志.通过连接运算符可以实现多个表查询.连接查询主要包括内 ...

最新文章

  1. Linux环境编程--多线程
  2. PostgreSQL_row_number() over()
  3. Linux: debian/ubuntu下安装Neo4j
  4. Linux下KVM的图形界面管理工具(virt-manager)(桌面版)
  5. 删除目录下大量小文件和清空大文件
  6. 用内存流 文件流 资源生成客户端(Delphi开源)
  7. 转载的SSO文章,很基础
  8. dw怎么做竖线_我花了5分钟,做了一份极“拉风”的PPT
  9. 服务器抽屉式维护,一种服务器用可顺序运动的滑轨
  10. myeclipse下Tomcat java.lang.OutOfMemory Error: Java heap space
  11. Cesium中的坐标系及转换
  12. 使用GDAL对DEM渲染处理流程
  13. C语言程序设计(第三版)何钦铭著 习题2-6
  14. 战神引擎php,战神引擎搭建教程
  15. 计算机wps基础知识,计算机考试WPSOffice常见知识点
  16. 概率分布 ---- 泊松分布
  17. c++内存管理:new与delete,深拷贝与浅拷贝
  18. 工程师的基本功是什么?该如何练习?
  19. ASP.NET Core中如何显示[PII is hidden]的隐藏信息
  20. MATLAB 2016a系统错误解决方案

热门文章

  1. 删除苹果自带软件后果_苹果IOS备忘录便签软件敬业签恢复删除内容应该怎么操作?...
  2. uniapp滑动切换tab标签_Web前端,Tab切换,缓存,页面处理的几种方式
  3. js 获取url问号前_PHP获取指定网页的HTML代码并执行输出
  4. delphi if多个条件_Python从入门到精通——一文读懂if语句用法
  5. mysql 参照完整性规则_mysql参照完整性
  6. java httpclient 关闭_【Java系列007】HttpClient调用:你考虑过关闭连接、并发了吗?...
  7. inside uboot (五) DRAM的构成
  8. django 学习 (四) 模板标签
  9. 神经网络与深度学习——TensorFlow2.0实战(笔记)(二)(包管理和环境管理)
  10. 【转】聊聊Linux操作系统中的显示管理器及如何更换