sql里in,all,any,some的区别和具体应用范围

in 是 确定集合的

SELECT au_lname, state
FROM authors
WHERE state IN ('CA', 'IN', 'MD')
结果:
au_lname   state
--------   ----
Yokomoto      CA
DeFrance      IN
Stringer      CA
MacFeather    CA
Karsen        CA
Panteley      MD
Hunter        CA

all 是查询还可以是子查询
如:

select name from edit
其中name前省略了all.
name前可以加ALL|DISTINCT
all是所有记录.
distinct是不重复的。

带【any】的嵌套查询和【some】的嵌套查询功能是一样的。早期的SQL仅仅允许使用【any】,后来的版本为了和英语的【any】相区分,引入了【some】,同时还保留了【any】关键词。
any:
select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >any(select sal from scott.emp where     job='MANAGER'); 
带any的查询过程等价于两步的执行过程。
    (1)执行“select sal from scott.emp where job='MANAGER'”
 select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal >2975 or sal>2850 or sal>2450; 

some:
select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =some(select sal from scott.emp where     job='MANAGER');

 带some的嵌套查询与any的步骤相同。
    (1)子查询,执行“select sal from scott.emp where job='MANAGER'”,其结果如图4.22所示。
    (2)父查询执行下列语句。
    ――――――――――――――――――――――――――――――――――――― 
    select emp.empno,emp.ename,emp.job,emp.sal from scott.emp where sal =2975 or sal=2850 or sal=2450;
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值