oracle数据库外部有一个参数,如果参数等于0,连A表;如果参数等于1,连B表。要求用一句sql写出。
类似于:select * from case when para = 0 tableA else tableB我现在想到的办法是,A表和B表都做连接,然后在select里面判断取哪张表的字段。
但是这样一来,查询开销太大。不知道有什么办法吗。

解决方案 »

  1.   

    只能是两张表都连接,然后使用case决定取哪张表的数据
    只连一个事不可能的
    要是能做到,那个开销才叫大
    整个查询连接一次表
    按你的要求的话,每查一行都得连接一次表
      

  2.   

    select * from (
    select 0 type, a.* from a
    union all
    select 1 type, b.* from b
    )
    where type = 0;这是你的方法吗?
      

  3.   

    select * from case when para = 0 tableA else tableB 改写成:if para=0 then 
    select * from tableA
    else
    select * from tableB
    end if;
      

  4.   

    现在用是某个java框架,sql语句单独作为一个文件。
    不是plsql,只是一句sql。
    就是想知道,from后面能不能用条件来判断到底连接哪张表。
      

  5.   

    为什么不在框架里面先动态生成sql呢
      

  6.   


    不可以,这个事情就是要在java中预先处理好,如果where条件后面都可以加条件,那数据库的执行计划恐怕就做不好喽