美文网首页
九、子查询

九、子查询

作者: 天天阳光好 | 来源:发表于2017-04-20 11:50 被阅读0次

一、定义

1. 子查询(subquery):是被另一个查询包围的查询,也可称为内层查询(INNER query),另一个查询可称为外层查询(OUTER query)

① 非关联子查询:即子查询可以独立运行且不会引用外层查询的任何结果;

② 关联子查询:子查询依赖外层查询,它需要来自外层的查询结果

备注:

外层查询+内层查询=以子查询进行查询

子查询的查询速度低于连接

二、非关联子查询

1.代码

SELECT tb1.column_name1,tb1.column_name2,tb2.column_name3 FROM

table_name1 AS tb1 NATURAL JOIN  table_name2 AS tb2

WHERE 

tb2.column_name3 IN(SELECT column_name3 FROM table_name3)

也可使用 'NOT IN' 查找不符合的结果

3、注意事项

① WHERE后可以使用比较运算符;但是大部分时间里需返回单一值,'IN'除外;

② 使用‘=’比较运算符时,内层查询返回的结果是一个单一值(SQL称为标量值),例如:

SELECT name FROM table_name 

WHERE

zip_code=(SELECT zip_code FROM table_name1 WHERE province='sichuan' AND city='guangan')

③ 子查询在SELECT的列名中

SELECT name,

(SELECT province FROM table_name2 WHERE tb1.zip_code=zip_code)  AS province 

FROM table_name1 tb1

子查询每次返回一个值,整个查询跟着返回一行,逐次循环返回结果。

三、关联子查询

1.NOT EXISTS 和 EXISTS

常用于找出外层查询结果不存在于关联表里的记录

SELECT name tb1.email email FROM table_name1 

WHERE NOT EXISTS

(SELECT * FROM table_name2 WHERE tb1.id=tb2.id)

2.EXISTS

同理,也可找出外层查询结果存在于关联表里的记录

即把NOT EXISTS 改成 EXISTS

相关文章

  • 九、子查询

    一、定义 1. 子查询(subquery):是被另一个查询包围的查询,也可称为内层查询(INNER query),...

  • MySQL查询语句

    目录 一、查询准备 二、条件查询 三、排序 四、聚合函数 五、分组 六、分页 七、连接查询 八、自关联 九、子查询...

  • SQL学习九、子查询

    子查询:嵌套在其他查询中的查询。 例如,我们需要获取国家内业图斑中图斑面积大于10亩的的图斑的所有附件数量 查询 ...

  • Oracel_子查询

    SQL子查询 子查询语法 子查询 (内查询) 在主查询之前一次执行完成。 子查询的结果被主查询(外查询)使用 。 ...

  • Oracle | 子查询和伪列

    1. 子查询 (1)单行子查询 (2)多行子查询 1)ANY子查询 2)ALL 子查询 2. 伪列...

  • 《SQL必知必会》第 11 课 使用子查询

    目标: 11.1 子查询 11.2 利用子查询进行过滤 11.3 作为计算字段使用子查询 11.1 子查询 查询(...

  • MySQL 子查询

    什么是子查询 为什么要使用子查询 子查询的分类 怎样使用子查询 关联子查询 要使用的数据表 1. 什么是子查询? ...

  • 数据库第七天

    子查询 查询里面还有查询注意: 子查询优先于主查询执行 最好子查询用括号 查询比ALLEN工资高的员工信息 单行子...

  • SQL查询_高级查询

    SQL查询_高级查询 一、子查询 子查询出现的位置一般为条件语句,oracle会先执行子查询,再执行父查询,子查询...

  • 17/12/6 子查询

    17/12/6 子查询 单行子查询 括号内的查询叫做子查询,也叫内部查询,先于主查询的执行。 子查询可以嵌入1.w...

网友评论

      本文标题:九、子查询

      本文链接:https://www.haomeiwen.com/subject/siwkzttx.html