表ades
----
aaa
bbb
cc
def
-------------------------------------表bdes1
------
gg
hh
-------------------------------------我要得到下面的数据des    des1
----------------
aaa    gg
bbb    hh
cc     null 
def    null
---------------------------------------create table #a(des varchar(10))
insert into #a select 'aaa'
insert into #a select 'bbb'
insert into #a select 'cc'
insert into #a select 'def'
create table #b(des1 varchar(10))
insert into #b select 'gg'
insert into #b select 'hh'

解决方案 »

  1.   

    --1用row_number
    select a.des,b.des1 from (
    select *,row_number()over(order by des) as px  from #a)a left join (
    select *,row_number()over(order by des1) as px  from #b)b on a.px=b.px
    --2临时表
    select *,id=identity(int,1,1) into #a_2 from #a
    select *,id=identity(int,1,1) into #b_2 from #b
    select a.des,b.des1 from #a_2 a left join #b_2 b on a.id=b.id
      

  2.   

    同意楼上说法, 两表没有关系,那表1的四条记录怎么和表2对应呢?是aaa  gg还是bbb  gg还是cc  gg对应呢? 不可能.而且数据库也不应该设计成这样.建议楼主改下表设计为好,免得以后数据量大了麻烦