现在有表A和表B ,表A和表B有关联,如果表B中有数据,那么表A中的数据就不显示。如果表B中没有数据表A的数据就显示。怎么做?跪求大神帮忙。

解决方案 »

  1.   

    SELECT *
      FROM a
     WHERE NOT EXISTS (SELECT *
                         FROM b
                        WHERE b.a_id = a.id)
      

  2.   

    select * from a
    left join b
    on b.id=a.id
    where b.id is null 
      

  3.   

    a表和b表结构完全一样吗,一样的话:
    SELECT * FROM a
     WHERE NOT EXISTS (SELECT 1  FROM b WHERE b.a_id = a.id)  /*去掉b表的a表数据*/
    union all
    select * from b /*b表数据*//*或使用以下语句:假设要显示的数据字段名为:sj,下面的decode语句可以实现*/
    SELECT a.id,decode(b.sj,'',a.sj,b.sj) 数据 FROM a,b where a.id=b.id(+)但是建议,如果a,b数据一样,只是为了消除重复的话可以用distinct
      

  4.   

    full join + nvl 配合使用。现在不方便敲语句,先自己试下