比如3个table
T1,T2,T3
我想先从T1取出T1.FLAG
然后判断其值,再来查询T2或T3。也可以这样理解:
SELECT 
T1.*,
T.*
FROM T1, (IF T1.FLAG=0 THEN T2 ELSE T3) T
用一条SQL语句怎么实现
或者有什么好的实现方法吗?

解决方案 »

  1.   

    select * from t2 where t2.* in (select decode(flag,0,flag1,1,flag2,flag3) from t1)主要是用decode  你去查查用法
      

  2.   

    decode  我知道,可是只能用在WHERE的条件中,
    我想FROM有没有什么条件选择的方法。
      

  3.   

    SELECT 
    T1.*,
    T.*
    FROM T1, T2 T
    where t1.flag='0'
      and ...
    union all
    SELECT 
    T1.*,
    T.*
    FROM T1, T3 T
    where t1.flag<>'0'
      and ...;
    如果flag不存在空值的话,否则还要加上flag为空的条件
      

  4.   

    问题解决了,多谢 bobfang(匆匆过客) 
    结账~