ORACLE 子查询

SELECT * FROM  emp

WHERE (job,sal)=

(

    SELECT job.sal FROM emp

    WHERE ename='ALLEN'

)

IN(NOT IN):用户指定一个子查询的范围

SELECT * FROM emp

WHERE sal IN

(SELECT sal FROM emp

 WHERE job='MANAGER')

但是在使用IN的时候要注意NOT IN的问题,如果使用NOT IN 操作,在子查询中,如果有一个内容是NULL,则不会查询出任何的结果

ANY:与每一个内容相匹配,有三种匹配模式

=ANY:与IN操作是一样的

SELECT * FROM emp

WHERE sal =ANY

(SELECT sal FROM emp

 WHERE job='MANAGER')


>ANY:比子查询中返回记录最小的还要大的数据

SELECT * FROM emp

WHERE sal >ANY

(SELECT sal FROM emp

 WHERE job='MANAGER')


<ANY:比子查询中返回记录的最大的还要小


SELECT * FROM emp

WHERE sal <ANY

(SELECT sal FROM emp

 WHERE job='MANAGER')


ALL:与第一个内容相匹配,有两种匹配形式:

>ALL:比子查询里返回的记录还要大

SELECT * FROM emp

WHERE sal >ALL

(SELECT sal FROM emp

 WHERE job='MANAGER')


<ALL:比子查询里返回的最小的记录还要小

SELECT * FROM emp

WHERE sal <ALL

(SELECT sal FROM emp

 WHERE job='MANAGER')


FROM 子查询

SELECT d.deptno,d.dname,d.loc,temp.count,temp.avg

FROM dept d,

(SELECT deptno dno,COUNT(empno) count,AVG(sal) avg

 FROM emp

 GROUP BY deptno) temp

WHERE d.deptno=temp.deno(+)






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值