sql - 我们如何在 SELECT 子句中使用子查询重写查询?
问题描述
您将如何尽可能将以下查询重写为一个没有子查询的查询?
Select dept name,
(Select Count(*)
From instructor
Where department.dept name = instructor.dept name
) As num_instructors
From department;
我想出了以下内容。它与上述等效吗?
Select dept name, count(*)
From department, instructor
Where department.dept name = instructor.dept name
Group By department.dept_name;
谢谢。
解决方案
编写查询的正确方法使用显式JOIN
语法:
select d.dept_name, count(i.dept_name)
from department d left join
instructor i
on d.dept_name = i.dept_name
group by d.dept_name;
如果您只关心至少有一名讲师的部门,那么根本join
不需要:
select i.dept_name, count(*)
from instructor i
group by i.dept_name;
推荐阅读
- python - 尝试将函数参数乘以整数时出现不支持的操作数类型错误
- javascript - 如何更改文本字段 HTML 中的值
- c++ - ImGui 多重采样
- google-cloud-platform - GKE 日志存储在 GCP 中的什么位置?
- linux - Teamcity 空白页面的 Kubernetes 入口
- linux - 在 bash 脚本中使用 grep 打印出 df 命令的输出
- python - 动态更新破折号表返回空行
- r - 使用 R 中的两列值快速查找另一个数据框
- r - 有没有办法让这个 R for 循环工作
- api - Spring Rest 模板 - 为什么我得到“whitelabel error”?