条件是这样的。
有一个表fi 表中有好多的字段。主要有dx1..dx9,cpt1..cpt9,rev1..rev9,还有就是mbrid 也就是id
求出满足dx1..dx9中任意一个字段等于402.01, 402.11, 402.91, 404.01, 404.11,  404.91, 428.0, 428.1, 428.20-428.23, 428.40-428.43 其中的任意一个。
cpt1..cpt9 中任意一个字段等于99201-99205, 99211-99215, 99241-99245, 99271-99275, 99301-99313, 99315-99316, 99318-99337, 99341-99350, 99354-99355, 99381-99387, 99391-99397,99401-99429,99450, 99455-99456 中的任意一个。
rev1..rev9 中的任意一个字段等于  0500-0529, 0570-0599, 0770-0779, 0820-0859, 0882, 0982-0983 中任意一个
dx和 cpt 还有 rev的关系是 dx and (cpt or rev)
最后是求满足这些条件的人的 mbrid 
请高手帮帮我啊!我都快被它给弄疯了……………………

解决方案 »

  1.   

    条件是这样的。 
    有一个表fi 表中有好多的字段。主要有dx1..dx9,cpt1..cpt9,rev1..rev9,还有就是mbrid 也就是id 条件1:求出满足dx1..dx9中任意一个字段等于402.01, 402.11, 402.91, 404.01, 404.11,  404.91, 428.0, 428.1, 428.20-428.23, 428.40-428.43 其中的任意一个。 
    条件2:cpt1..cpt9 中任意一个字段等于99201-99205, 99211-99215, 99241-99245, 99271-99275, 99301-99313, 99315-99316, 99318-99337, 99341-99350, 99354-99355, 99381-99387, 99391-99397,99401-99429,99450, 99455-99456 中的任意一个。 
    条件3:rev1..rev9 中的任意一个字段等于  0500-0529, 0570-0599, 0770-0779, 0820-0859, 0882, 0982-0983 中任意一个 
    条件4:dx和 cpt 还有 rev的关系是 dx and (cpt or rev) 最后是求满足这些条件的人的 mbrid 条件1 and 条件2 and 条件3 and 条件4 ?
      

  2.   


    不是的 是三个条件 这三个条件满足的关系是 dx and (cpt or rev)
      

  3.   

    select mbrid from fi
    where (dx1 in (402.01,402.11,402.91,...)
           or dx2 in ()
           or ...
          )
    and   (cpt1 between 99201 and 99205
           or
           cpt1 between 99211 and 99215
           or ...
           rev1 between 0500 and 0529
           or
           ....
          );昨天不是有个帖子问过么
      

  4.   

    没有办法,对性能来说,按这个条件,应该没法提高了
    如果你嫌写麻烦,可以写个过程拼出这段代码
    你可以将这个表中相似的字段用union all接到一个字段里,再判断就不用那么多条件了
    但是性能会更低
      

  5.   

    其实问题不太复杂,我觉得是lz可以考虑用动态sql语句的方法来解决。