关注。case when 这块还是别用exists为好

解决方案 »

  1.   

    select t.*,
    case when (EXISTS(SELECT * FROM planadmin,t where 
    planadmin.file_ not in ('陕计投资[2000] 1085号','陕计投资[2001] 148号','陕计投资[2001] 983号','陕计投资[2002] 229号','陕计投资[2002] 596号','陕计投资[2002] 914号','陕计投资[2002] 1176号','陕计投资[2003] 741号','陕计投资[2004] 234号','陕计投资[2004] 441号','陕发改投资[2004] 777号') 
    and charindex(t.F27,'、'+planadmin.retwo+'、')>0 and t.F7 is not null)) 
    then 1  else 0 end as keyid,  case when (EXISTS(SELECT * FROM planadmin,t where 
    planadmin.file_ not in ('陕计投资[2000] 1085号','陕计投资[2001] 148号','陕计投资[2001] 983号','陕计投资[2002] 229号','陕计投资[2002] 596号','陕计投资[2002] 914号','陕计投资[2002] 1176号','陕计投资[2003] 741号','陕计投资[2004] 234号','陕计投资[2004] 441号','陕发改投资[2004] 777号') 
    and charindex(t.F27,'、'+planadmin.retwo+'、')>0 and t.F7 <planadmin.watersupply_population and t.F7 is not null))
    then 1  else 0 end as keyid1
    FROM t where t.F7 is not null order by t.city_name 解释一下,就是当遇到case when这种情况,如果满足charindex(t.F27,'、'+planadmin.retwo+'、')>0 and t.F7 is not null条件时,给keyid赋值,在此基础上,如果多加一个条件t.F7 <planadmin.watersupply_population ,然后给keyid1赋值,应怎样优化sql语句,尽量提高其效率和准确性,望指教
      

  2.   

    尽量把条件加到where条件里面。
      

  3.   


    把条件加到where字句后面去吧!