SQL---子查询(subquery)
子查询,是指在查询语句中嵌套查询语句。(这里指的是普通子查询,而非关联子查询)
以下是子查询出现的几种形式:
1,在WHERE子句中的子查询
这种是最常见的普通子查询。如果子查询返回的结果只有1个,那么就称为标量子查询。例如:
SELECT * FROM sales_agents WHERE agency_fee > (SELECT AVG(agency_fee) FROM sales_agents);
如果子查询返回的结果不止1个,那么可以用ALL,ANY关键字,或者用IN,NOT IN,EXISTS,NOT EXISTS关键字进行筛选。例如:
SELECT AVG(agency_fee) FROM sales_agents WHERE id NOT IN (SELECT id FROM managers)
SELECT project_id FROM project GROUP BY project_id HAVING COUNT(employee_id) >= ALL(SELECT COUNT(employee_id) FROM project GROUP BY project_id)
2,在SELECT子句中的子查询
主要用于填充列。
SELECT name, price, (SELECT AVG(price) FROM paintings) AS avg_price FROM paintings
需要注意的是,必须给在SELECT子句中的子查询取别名。
3,在FROM子句中的子查询
也就是把子查询的结果当成一张表,然后在这张新表的基础上再进行后续操作。例如:
SELECT budget FROM department, (SELECT max(budget) as val FROM department) AS max_budget WHERE department.budget = max_budget.val
在这种情况下,更好的做法是把子查询做成一个视图(view),这样比较清晰,还可以复用,修改起来也方便。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架
2019-03-28 偏差-方差均衡(Bias-Variance Tradeoff)