如果1=1的话,从A表里把name和id取出来,如果1<>1的话,从B表里把name和id取出来。select
         case 
             when 1=1
                then A.name,
                         A.id
              ELSE  B.name,
                         B.id
form
       A left join B on ...上面那段SQL文执行不成功,then貌似只能返回一个结果

解决方案 »

  1.   

    select a.* from a where ...
    union all
    select b.* from b where ...
      

  2.   


    select (case when 1=1 then A.name||A.id ELSE B.name||B.id end)--或者
    select (case when 1=1 then A.name else B.name end) name,
           (case when 1=1 then A.id else B.id end) id
    from 
    ...
      

  3.   

    1=1是真理啊    你永远就只能看到A.name,A.id
      

  4.   

    decode~~哇哈哈~貌似oracle的decode可以实现你的要求的说,而且实现起来比较容易
    decode(条件字段或者啥东西,条件一,条件一所要赋值,条件二,条件二所要赋值,条件三,条件三所要赋值,条件四,条件四所要赋值,..........条件n,条件n赋值,默认赋值)
      

  5.   

    case 的return 的子句里面应该只能出现一行一列
      

  6.   

    select (case when 1=1 then A.name else B.name end) name,
           (case when 1=1 then A.id else B.id end) id
    from 表A,表B
      

  7.   

    谢谢各位大大的回答~~~我换了个想法,实现了。。
    先把所有条件下数据都用子查询检索出来后,在where条件里用case来匹配。