子查询是在查询语句里面再嵌套一个查询,这是因为我们在提取数据的时候有很多不知道的数据产生了依赖关系。此时我们就需要先查询一组数据的结果集,然后将这个结果集作用为下
子查询是在查询语句里面再嵌套一个查询,这是因为我们在提取数据的时候有很多不知道的数据产生了依赖关系。此时我们就需要先查询一组数据的结果集,然后将这个结果集作用为下一个查询的对象。在 “表连接的章节”,我们曾说过子查询的效率低下的问题,其实并不是所有的子查询效率都是低下的,“WHERE” 子查询在匹配记录的时候要反复执行,这是不推荐使用的;但是如果将查询结果集当做一张表来使用,与其他的表做一个连接,这就是 “FROM” 子句的子查询了,这种子查询的方式,还是比较推荐使用的。 详细的说,子查询分为 “单行子查询”、“多行子查询”、"WHERE"子查询、“FROM” 子查询 和 “SELECT” 子查询;这些都是该章节我们需要学习的内容。 子查询简介子查询是一种查询语句中再嵌套一个查询的语句 普通查询语句分为 “SELECT” 子查询、“FROM” 子查询、“WHERE"子查询;(重点推荐使用 " ‘FROM’ 子查询”) 子查询示例如下: 查询底薪超过公司平均底薪的员工信息。(之前我们使用过表连接的方式做个这个案例,这里来看一下如何通过子查询的方式来实现。)
以上就是 WHERE 子句的子查询,不过 WHERE 子句的子查询使不推荐使用的,应该使用表连接的写法。 WHERE 子查询在书写 SQL 语句的时候, WHERE 子查询最符合我们人的思考逻辑 虽然这种 子查询 最简单、最容易理解,但是却是效率很低的子查询 以刚刚演示的 查询底薪超过公司平均底薪的员工信息 来说吧。“WHERE” 子句拿每一条员工的记录与 “SELECT” 子查询做比较的时候,子查询都需要重新执行一次。如果员工表有 10000 条记录,那么 子查询 就需要执行 10000次,反复执行这么多次,效率上是极其低下的。 在查询语句中,反复被查询的子查询被称为 “相关子查询”,这里的 “WHERE” 子查询就属于 “相关子查询” 应该避免使用这种子查询。 FROM 子查询在查询语句中, “FROM” 子查询只会执行一次,这与 “WHERE” 子查询是相反的,所以查询效率很高。 同样以 查询底薪超过公司平均底薪的员工信息 为例,来看一看 “FROM” 子查询是如何实现的。
所以这个题目利用 "FROM" 子查询也可以轻松的实现,未必要使用 "WHERE" 子查询。因为 "FROM" 子查询并不是 相关子查询,所以再解决一些问题的时候应该有限选择这种子查询类型。 SELECT 子查询说一句实在的,这种子查询在我目前经历的所有项目中,一次也没见到过。 究其原因呢,是因为 “SELECT” 子查询也是相关子查询,它在SQL语句中也会反复的执行,查询效率很低。 这里我们就举个例子:比如说现在要查询每个员工的部门信息,
虽然执行出来的结果是对的,但是执行的效率实在是太低了,所以这种 "SELECT" 子查询的方式也是不推荐使用的,了解即可,当我们看到有其他人使用 "SELECT" 子查询的时候,最好善意的提醒一下 |
2021-06-02
2021-06-05
2022-06-27
2022-10-12
2019-09-11