where in

条件 E1 in (E2,E3,E4) 等同于

(E1=E1) and ((E1=E2) or(E1=E3) or(E1=E4)  or false )

 

1: 如果E1  为Null ,因为E1=E1是未知的,所以与该子查询的结果无关,整个计算结果为未知

2:如果E1 不为NULL ,且子查询不返回值时,因为最后一项是fasle

所以结果是fasle

3:如果E1 不为NUll,且子查询的结果有一为Null,有一不为NULL,则结果为真或未知

4:如果E1 不为Null ,且所有子查询为NUll,则结果是未知的

 

 

 

 

E1 not in (E2,E3,E4)

等于 not (E1 in (E2,E3,E4)) 即

(E1=E1)and (E1!=E2) and (E1!=E3) and(E1!=E3) and true

 

 

 

 

 

 

 

1: 如果E1  为Null ,因为E1=E1是未知的,所以与该子查询的结果无关,整个计算结果为未知

2:如果E1 不为NULL ,且子查询不返回值时,因为最后一项是true

所以结果是true

3:如果E1 不为NUll,且子查询的结果有一为Null,有一不为NULL,则结果为真或未知

4:如果E1 不为Null ,且所有子查询为NUll,则结果是未知的

 

注意 不同的数据库(我上面的是mysql ),可能有不同的解释

 

在sql(oracle ) 中, true or null 是true 而false or null 是null ,当结果中有一个是null值时,null就会延续下去,除非对null作了特殊处理

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值