当前位置: 代码迷 >> Oracle开发 >> ALL和IN是不是意思一样啊该怎么解决
  详细解决方案

ALL和IN是不是意思一样啊该怎么解决

热度:69   发布时间:2016-04-24 07:53:48.0
ALL和IN是不是意思一样啊?
SELECT   *   FROM   table1   WHERE   Column1   =   ALL( 'a ',
'b ', 'c ')

SELECT   *   FROM   TABLE1   WHERE   Column1   in( 'a ', 'b ', 'c ')

是不是一样?

我感觉这里的效果应该一样的.
分不多了,不好意思.

------解决方案--------------------
不一样,in是or
all是and
------解决方案--------------------
不是完全一样的. ALL 是比较计算符号,但是前面必须跟 =, !=, > , <,
<=, > =.
IN 不能前面更别的比较计算符号.
当 ALL前面更 '= '的时候,和IN是起到同样作用.
如果需要的话,
可以如此查询SELECT * FROM TAB WHERE SUBSTR(TNAME,1,1)> ALL( 'A ', 'B ', 'C ');
则会返回所有表或者视图中第一个字符大于A,B,C的.
所以当需要和多个市值一起比较的时候,使用ALL来是很方便的,不需要写多次.
------解决方案--------------------
帮楼上更正一点,当all前面是=的时候,和in起的作用也是不同的,all是必须匹配集合中的所有元素,如 where col > all(1,2,3),那么col必须大于1且大于2和3,而where col = all(1,2,3)则是要col等于1且等于2和3,也就是永远假的逻辑,不同于 where col in (1,2,3)只要col是1、2、3中的一个就可以的逻辑
------解决方案--------------------
好!
------解决方案--------------------
=ANY等价于IN
  相关解决方案