SQL-我如何修复我的代码(如下所示),以便它可以与子查询一起使用?

时间:2017-10-31 00:40:10

标签: sql oracle

table 所以问题是“有多少员工在孟买工作?”,我一般会把我的代码编写如下

select loc, count(*) from dept where loc = 'Mumbai' GROUP BY loc;

但是这里是子查询,我如何修复代码?

5 个答案:

答案 0 :(得分:1)

如果你的课程还没有覆盖连接,那么这是非常基本的方式:

SELECT COUNT(*)
FROM emp
WHERE deptno = (
  SELECT deptno
  FROM dept
  WHERE loc = 'Mumbai'
);

如果您的课程已覆盖联接,请考虑联接的内容:

SELECT emp.*, dept.*
FROM emp
JOIN dept ON emp.deptno = dept.deptno
ORDER BY emp.eno;

运行该查询并查看结果。您将拥有五个员工行,每行将包含员工的部门信息。

您可以依靠连接的表格。这就像对上面的查询结果运行计数:

SELECT COUNT(*)
FROM emp
JOIN dept ON emp.deptno = dept.deptno
WHERE dept.loc = 'Mumbai';

答案 1 :(得分:0)

通过deptno加入两个表并添加dept.loc ='Mumbai'

答案 2 :(得分:0)

尝试以下方法:

 select count(*) from dept where loc =(select loc from dept where loc ='mumbai')

答案 3 :(得分:0)

deptno上执行联接,按您想要的位置过滤并总结记录数:

select sum(1) from dept, emp where dept.deptno = emp.deptno and dept.loc = 'mumbai';

答案 4 :(得分:0)

在e.deptno = d.deptno上从emp123 e内部联接部门选择计数(*),其中loc =(从dept中选择loc,其中loc =' mumbai')