SELECT * FROM table1 WHERE Column1 = ALL('a',
'b','c')

SELECT * FROM TABLE1 WHERE Column1 in('a','b','c')是不是一样?我感觉这里的效果应该一样的.
分不多了,不好意思.

解决方案 »

  1.   

    不是完全一样的. ALL 是比较计算符号,但是前面必须跟 =, !=, >, <,
    <=, >=.
     IN 不能前面更别的比较计算符号.
    当 ALL前面更'='的时候,和IN是起到同样作用.
    如果需要的话,
    可以如此查询SELECT * FROM TAB WHERE SUBSTR(TNAME,1,1)>ALL('A','B','C');
     则会返回所有表或者视图中第一个字符大于A,B,C的.
    所以当需要和多个市值一起比较的时候,使用ALL来是很方便的,不需要写多次.
      

  2.   

    帮楼上更正一点,当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中的一个就可以的逻辑
      

  3.   

    adaizi1980(阿代) 所说的正确