现在有两张表,A、B,B是A的子表。A、B的结构如下:A{a,b,c}、B{a,d,e},查询以a作为关联条件。假如A、B表中有一下记录有以下记录A:{1,2,3}、{2,4,5}B:{1,5,6}、{1,3,5}、{1、4,3}、{2,4,6},{2,5,7}这是我希望通过关联查询,得到如下结果:{1,2,3,5}、{2,4,5,4}请问sql语句如何写?

解决方案 »

  1.   

    解释一下:A与B是一对多的关系,因此在B表中有多条记录对应A表中的一条记录,但我不想查出所有这个记录(A*B)而只想查出一条既可!请问如何实现?
      

  2.   

    select a,b,c,d from
     (
         select
             t.a,
             t.b,
             t.c,
             t.d
             dense_rank() over(partition by t.a order by t.d) rank
         from
             (select a.a,b,c,d from a,b where a.a=b.a)t
     ) s
     where s.rank=1;
      

  3.   

    能给解释一下吗?比如:dense_rank() 是什么意思?partition ?over()?我需要在oracle中进行查询。谢谢!