oracle 判断子查询,Oracle子查询详解

1.先于主查询执行。

2.主查询调用了子查询的结果。

3.注意列的个数和类型要匹配。

4.查询返回多行要用多行关系运算操作。

5.子查询要用括号括起来。

查询工资总和高于10号部门工资总和的部门。

select deptno,sum(sal)

from emp

group by deptno

having sum(sal)>(select sum(sal) from emp where deptno=10);

DEPTNO SUM(SAL)

------ ----------

30 9400

查询每个部门的最大工资是谁。

select deptno,ename,sal

from emp

where (deptno,sal) in (select deptno,max(sal) from emp group by deptno);

DEPTNO ENAME SAL

------ ---------- ----------

30 BLAKE 2850

10 KING 5000

20 FORD 3000

子查询返回多行,用=不可以,得用in。

子查询返回多列,所以对比的列也要匹配。

Any 和all操作

SQL> select ename,sal from emp where sal

ENAME SAL

---------- ----------

SMITH 800

ALLEN 1600

WARD 1250

MARTIN 1250

TURNER 1500

JAMES 950

MILLER 1300

7 rows selected.

小于2000就可以

SQL> select ename,sal from emp where sal

ENAME SAL

---------- ----------

SMITH 800

JAMES 950

必须小于1000

小于all小于最小,大于all大于最大

SQL> select ename,sal,deptno from emp

2 where sal

ENAME SAL DEPTNO

---------- ---------- ------

SMITH 800 20

WARD 1250 30

MARTIN 1250 30

TURNER 1500 30

JAMES 950 30

MILLER 1300 10

小于any小于最大,大于any大于最小

select ename,sal,deptno from emp

where sal>any(select avg(sal) from emp group by deptno)

ENAME SAL DEPTNO

ALLEN 1600 30

JONES 2975 20

BLAKE 2850 30

CLARK 2450 10

KING 5000 10

FORD 3000 20

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值