默认情况下:where 条件语句1;
当有其他查询条件时,要让条件语句1失效,目前是这样写的:where 其他条件 or 1=0 and 条件语句1。
请问还有其他写法吗?上面这样写查起来很慢耶

解决方案 »

  1.   

    这就行了,只要保证 and 前面不符合 ,后面就不用了
      

  2.   

    如果是拼接字符串形式的,你程序里处理条件判断后拼接一个最后的SQL字符串给它。
      

  3.   

    看了一下解释计划,上面语句慢的原因是:
    select * from tableA where id in (select aid from tableB where name in ('123')) or 1=0会执行全表扫描,但select * from tableA where id in (select aid from tableB where name in ('123'))这句就不会进行全表扫描,怎么办啊
      

  4.   

    你的Oracle版本是不是有问题?我10G的版本上测试了下,两者写法的解释计划完全一样,遇到OR 1=0会直接忽略此条件的。