本帖最后由 lvtao_cn 于 2011-05-30 20:10:17 编辑

解决方案 »

  1.   

    select tableA.field1,field2,field3 from tableA left join tableB 
    on tableA.field1=tableB.field1
      

  2.   


    declare @tableA table (field1 varchar(2),Field2 varchar(4))
    insert into @tableA
    select 'A1','A121' union all
    select 'A1','A122' union all
    select 'A1','ANN' union all
    select 'B1','B1N' union all
    select 'B2','BNN'declare @tableB table (field1 varchar(2),field3 varchar(4))
    insert into @tableB
    select 'A1','A333' union all
    select 'A1','ACNN' union all
    select 'B1','B33N' union all
    select 'B2','B3NN'select a.field1,a.field2,b.field3 from (
    select row_number() over (partition by field1 order by field1) as rid,* 
    from @tableA) a 
    left join (
    select row_number() over (partition by field1 order by field1) as rid,* 
    from @tableB) b on a.field1=b.field1 and a.rid=b.rid
    /*
    field1 field2 field3
    ------ ------ ------
    A1     A121   A333
    A1     A122   ACNN
    A1     ANN    NULL
    B1     B1N    B33N
    B2     BNN    B3NN
    */--没搞明白为什么最后一行的B2要到B1的后面
      

  3.   

    chuanzhang5687 
    (船长) 
     答案为错误 的, tableA 的field1  与 tableB field1 不是key index ,这样会产生很多重复记录!