例如有语句:select * from table_name where expr1>expr2 and expr1>expr3;
 其中,expr2 与expr3没有关系.我的问题是,由于expr1的计算过程比较复杂,算起来比较费时间.象上面的那种写法对expr1做了两次计算.这样比较浪费时间.请问有什么办法或者函数能实现以上功能,但是只对expr1做一次计算的呢?

解决方案 »

  1.   

    如果expr2 > expr3:
    select * from table_name where expr1 > expr2;
    如果 expr2 < expr3;
    select * from table_name where expr1 > expr3;
      

  2.   

    大哥啊..问题是expr2与expr3没有明确的逻辑大小关系.....
      

  3.   

    不会吧。既然expr2 和 expr3 跟 expr1 都能比大小。怎么会没有关系的?
      

  4.   

    expr2 与expr3是两个变量...关系不确定.....
      

  5.   

     where expr1 >expr2   and   expr1 >expr3; 
    换成:
     where expr1 > if(expr2>expr3,expr2,expr3);这样应该可以了。