有三张表A,B,C 表A和表B是一对多的关系,表A和表C也是一对多的关系,现在要用A做主表查询,要从B,C表中去除某些记录
这样的sql该如何写才能不出现重复记录

解决方案 »

  1.   

    select distinct...
    from a left join b on ...
           left join c on ...
    where ...
      

  2.   

    可考虑分别给B,C两表增加“序号”伪列,然后再做联接。例如:select * from a,
            (select row_number() over(order by 1) r,b.* from b) b,
            (select row_number() over(order by 1) r,c.* from c) c
    where a.id=b.parent_id(+)
    and   b.parent_id=c.parent_id(+)
    and   b.r=c.r(+)
    当然如果B,C两表数据较多的情况下,执行效率不敢恭维