select *,
case when z2='1' then z1 end z1,
case when z2='1' then z2 end z2,
case when z2='1' then z3 end z3
from T2

解决方案 »

  1.   

    select *,T1.z1,T1.z2,T1.z3
    from T2,T1
    where T1.z2='1'
      

  2.   

    select T1.z1,T1.z2,T1.z3,T2.*
    from T1,T2
    where T1.z2='1'
      

  3.   

    http://www.blog.com.cn/user25/lijunyi/archives/2005/213533.shtml
      

  4.   

    子查询不要出现太多,大多数能够使用外连接来替代select *,
    (select z1 from T1 where z2=T2.Id) z1,
    (select z2 from T1 where z2=T2.Id) z2,
    (select z3 from T1 where z2=T2.Id) z3,
    from T2这段语句肯定不是优化的,会有性能问题的,可以有如下的方式来改写select *, T1.Z1, T1.Z2, T1.Z3from T2 left outer join T1 on T1.Z2 = T2.ID