where not (主键  between 4 and 6)

解决方案 »

  1.   

    where 主键 in (1,2,3...7,8,9)and 主键 not in (4,5,6)  ??
    怪怪的呢。
    where 主键 in (1,2,3,7,8,9)  不就行了吗?
      

  2.   

    where  patindex('%[1-37-9]%',主键)=1
      

  3.   

    1 where 主键 in (1,2,3...7,8,9)
    WHERE 主键 BETWEEN 1 AND 9where 主键  not in (1,2,3,7,8,9) 这个是可以优化的,不过要看你具体的环境。其实一个大的原则是尽可能的少用in, or等
      

  4.   

    同等条件下
    BETWEEN 比 IN 更有效率
    IN 要进行表扫描
      

  5.   

    如果數據很多的話,不妨這樣子
    where key = 1
    union
    where key = 2
    ...雖然麻煩一點,但是速度快一點
      

  6.   

    可能有朋友误解了我的意思in (1,2,3...7,8,9)and 主键 not in (4,5,6)
    一个in 和一个 not in 的(....)条件是不固定的,所以肯定没有办法采用楼上和2楼的方法 然后再多咨询一个问题,比如对 A 字段(int 无重复) B字段(int 有重复) 同时作了一个 PK_index 的索引
    然后我在查询的时候 使用 where a=1 and b=1 这样能有效利用索引还是 用 where b=1 and a=1  利用比较有效率呢,以前听别人说 SQL语句执行where 条件是从两边往中间执行的 概念比较模糊谢谢各位赐教 :)