你真的会玩SQL吗?无处不在的子查询

简介:

你真的会玩SQL吗?系列目录

你真的会玩SQL吗?之逻辑查询处理阶段

你真的会玩SQL吗?和平大使 内连接、外连接

你真的会玩SQL吗?三范式、数据完整性

你真的会玩SQL吗?查询指定节点及其所有父节点的方法

你真的会玩SQL吗?让人晕头转向的三值逻辑

你真的会玩SQL吗?EXISTS和IN之间的区别

你真的会玩SQL吗?无处不在的子查询

你真的会玩SQL吗?Case也疯狂

你真的会玩SQL吗?表表达式,排名函数

你真的会玩SQL吗?简单的 数据修改

你真的会玩SQL吗?你所不知道的 数据聚合

你真的会玩SQL吗?透视转换的艺术

你真的会玩SQL吗?冷落的Top和Apply

你真的会玩SQL吗?实用函数方法汇总

你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(上)

你真的会玩SQL吗?玩爆你的数据报表之存储过程编写(下)

 

子查询又称内部,而包含子查询的语句称之外部查询(又称主查询)。 
所有的子查询可以分为两类,即相关子查询和非相关子查询 
1> 非相关子查询是独立于外部查询的子查询,子查询总共执行一次,执行完毕后将值传递给外部查询。 
2> 相关子查询的执行依赖于外部查询的数据,外部查询执行一行,子查询就执行一次。 
故非相关子查询比相关子查询效率高 

--非相关子查询 
SELECT EMPNO, LASTNAME 
FROM EMPLOYEE 
WHERE WORKDEPT = 'A00' 
AND SALARY > (SELECT AVG(SALARY) 
FROM EMPLOYEE 
WHERE WORKDEPT = 'A00') 

--相关子查询 
SELECT E1.EMPNO, E1.LASTNAME, E1.WORKDEPT 
FROM EMPLOYEE E1 
WHERE SALARY > (SELECT AVG(SALARY) 
FROM EMPLOYEE E2 
WHERE  E2.WORKDEPT = E1.WORKDEPT
ORDER BY E1.WORKDEPT 
 

 子查询

 

 

嵌套子查询,非相关子查询   

相关例子 相关子查询和嵌套子查询 [SQL Server]

 

相关子查询

 

自联接

联合查询

•Union 操作符:将两个或更多个 SELECT 语句的结果合并为一个结果集。
•联合可以指定为如下形式:

     SELECT 语句    UNION [ALL]           SELECT 语句

使用 ALL 子句表示不删除重复的行

 联合查询注意事项:

  1. 每个select必须具有相同的列结构
  2. 兼容列类型(指优先级较低数据类型必须能隐式地转换为较高级的数据类型)和相同数目的列

 

练习:

使用子查询

复制代码
/*1:写一条查询语句,返回Orders表中活动的最后一天生成的所有订单。
涉及的表:Sales.Orders表。
期望的输出:*/
orderid     orderdate               custid      empid
----------- ----------------------- ----------- -----------
11077       2008-05-06 00:00:00.000 65          1
11076       2008-05-06 00:00:00.000 9           4
11075       2008-05-06 00:00:00.000 68          8
11074       2008-05-06 00:00:00.000 73          7
复制代码

参考SQL:

  View Code
复制代码
/*2:写一条查询语句,并返回2008年5月1号(包括这一天)以后没有处理过的订单的雇员。
涉及到表:HR.Employees表和Sales.Orders表。
期望的输出:*/
empid       FirstName  lastname
----------- ---------- --------------------
3           Judy       Lew
5           Sven       Buck
6           Paul       Suurs
9           Zoya       Dolgopyatova
复制代码

参考SQL:

  View Code
复制代码
/*3:写一条查询语句,返回订购了第12号产品的客户。
涉及的表:Sales.Customers表和Sales.Orders表。
期望的输出:*/
custid      companyname
----------------------------------------
48          Customer DVFMB
39          Customer GLLAG
71          Customer LCOUJ
65          Customer NYUHS
44          Customer OXFRU
51          Customer PVDZC
86          Customer SNXOJ
20          Customer THHDP
90          Customer XBBVR
46          Customer XPNIK
31          Customer YJCBX
87          Customer ZHYOS
复制代码

参考SQL:

  View Code

 本文转自欢醉博客园博客,原文链接http://www.cnblogs.com/zhangs1986/p/4915126.html如需转载请自行联系原作者


欢醉

相关文章
|
3月前
|
SQL 关系型数据库 PostgreSQL
CTE vs 子查询:深入拆解PostgreSQL复杂SQL的隐藏性能差异
本文深入探讨了PostgreSQL中CTE(公共表表达式)与子查询的选择对SQL性能的影响。通过分析两者底层机制,揭示CTE的物化特性及子查询的优化融合优势,并结合多场景案例对比执行效率。最终给出决策指南,帮助开发者根据数据量、引用次数和复杂度选择最优方案,同时提供高级优化技巧和版本演进建议,助力SQL性能调优。
290 1
|
11月前
|
SQL 关系型数据库 PostgreSQL
遇到SQL 子查询性能很差?其实可以这样优化
遇到SQL 子查询性能很差?其实可以这样优化
469 2
|
SQL
什么是SQL中的子查询?
【8月更文挑战第2天】什么是SQL中的子查询?
156 1
|
SQL 数据库 开发者
SQL中的子查询:嵌套查询的深度解析
【8月更文挑战第31天】
1642 0
|
SQL 数据挖掘 数据库
SQL 子查询深度剖析来袭!嵌套查询竟有如此无限可能,带你轻松玩转复杂数据检索与操作!
【8月更文挑战第31天】在 SQL 中,子查询是一种强大的工具,允许在一个查询内嵌套另一个查询,从而实现复杂的数据检索和操作。子查询分为标量子查询、列子查询和行子查询,可用于 SELECT、FROM、WHERE 和 HAVING 子句中。例如,查找年龄大于平均年龄的学生或每个课程中成绩最高的学生。子查询具有灵活性、可重用性和潜在的性能优化优势,但需注意性能问题、可读性和数据库支持。合理使用子查询能够显著提升查询效率和代码维护性。
307 0
|
SQL 数据处理 数据库
SQL进阶之路:深入解析数据更新与删除技巧——掌握批量操作、条件筛选、子查询和事务处理,提升数据库维护效率与准确性
【8月更文挑战第31天】在数据库管理和应用开发中,数据的更新和删除至关重要,直接影响数据准确性、一致性和性能。本文通过具体案例,深入解析SQL中的高级更新(UPDATE)和删除(DELETE)技巧,包括批量更新、基于条件的删除以及使用子查询和事务处理复杂场景等,帮助读者提升数据处理能力。掌握这些技巧能够有效提高数据库性能并确保数据一致性。
367 0
|
SQL 缓存 关系型数据库
一次sql改写优化子查询的案例
在生产环境中,一个MySQL RDS实例遭遇了高CPU使用率问题,原因是执行了一条复杂的UPDATE SQL语句,该语句涉及一个无法缓存的子查询(UNCACHEABLE SUBQUERY),导致子查询需要针对每一行数据重复执行,极大地影响了性能。SQL语句的目标是更新一行数据,但执行时间长达30秒。优化方法是将子查询转换为内连接形式,优化后的语句执行时间降低到毫秒级别,显著减少了CPU消耗。通过示例数据和执行计划对比,展示了优化前后的时间差异和执行效率的提升。
369 2
T-sql 高级查询( 5*函数 联接 分组 子查询)
T-sql 高级查询( 5*函数 联接 分组 子查询)
108 1
|
SQL 算法 大数据
深入解析力扣177题:第N高的薪水(SQL子查询与LIMIT详解及模拟面试问答)
深入解析力扣177题:第N高的薪水(SQL子查询与LIMIT详解及模拟面试问答)
|
SQL 关系型数据库 MySQL

热门文章

最新文章