假设A表记录如下
Acol1  Acol2  MAN1  MIKE
MAN2  JACK
MAN3  COCK表B记录如下
Bcol1  Bcol2MAN1   1
MAN1   2
MAN2   3
MAN2   4
MAN3   5
MAN3   6写SELECT Acol1,Bcol2 FROM A,B WHERE A.Acol1=B.col1
得到的是表B相似内容
如果我只想得这样结果呢
MAN1   1
MAN2   3
MAN3   5
我用LEFT JOIN也是得到的COL1列有重复的记录.可是我想COL1列是唯一的.
刚接触...请大家帮助

解决方案 »

  1.   

    select *
    from (
    select b.*,row_number() over(partition by bcol1 order by b.col2) rn
          from b) 
    where rn=1
      

  2.   

    如果B表的Bcol2是自增的话下面这样就可以了SELECT T.ACOL1, MIN(T1.BCOL2) AS BCOL2
      FROM TEST T, TEST1 T1
     WHERE T.ACOL1 = T1.BCOL1
     GROUP BY T.ACOL1;不是的话参照1楼的
      

  3.   

    如果B表的Bcol2不是自增的但是主键我的那个SQL也可以
    如果还不是参照1楼的.
      

  4.   

    不明白楼主的艺术,bcol2是放什么数据呢?
      

  5.   

    如果B表的Bcol2是自增的前提下:
    SELECT Acol1,Bcol2 FROM A inner join B on A.Acol1=B.col1 where Bcol2%2=1
      

  6.   

    楼主用的是左连接,用右连接是否可以达到楼主想要的结果呢?此外,楼主提供的数据感觉不具有一般性,会不会下面的结果,某种情况下也会出现呢
    MAN1  1 
    MAN2  3 
    MAN3  6