表A
ITEM     MIX_ID   MIX_NAME  MIX_WEIGHT
1 FFF AESD 19.0
2 FFF DEDF 43.0
3 FFF SFSDF 53.0
5 RRR YHN 43.0
6 RRR HUJ 4.0
7 HHH TES 78.0 表B
INDEX    NIX_ID   NIX_NAME  NIX_WEIGHT
1 FFF 1 2.0
2 FFF DES 19.0
3 FFF 1 232.0
4 FFF DES 32.0
5 RRR UYJ 232.0
6 GGG UUN 66.0
通过两个表,要查询得出下面结果:1 FFF AESD 19.0 FFF 1 2.0
2 FFF DEDF 43.0 FFF DES 19.0
3 FFF SFSDF 53.0 FFF 1 232.0
4        NULL      NULL     NULL     FFF DES 32.0
5 RRR YHN 43.0 RRR UYJ 232.0
6 RRR HUJ 4.0 NULL     NULL     NULL
7 HHH TES 78.0 NULL     NULL     NULL
8        NULL     NULL     NULL     GGG UUN 66.0

解决方案 »

  1.   

    --try
    select * from A
    full join B on A.ITEM=B.INDEX
      

  2.   

    create table A(ITEM int,MIX_ID nvarchar(10),MIX_NAME nvarchar(10),MIX_WEIGHT decimal(10,1))
    insert A select 1,'FFF','AESD',19.0
    union all select 2,'FFF','DEDF',43.0
    union all select 3,'FFF','SFSDF',53.0
    union all select 5,'RRR','YHN',43.0
    union all select 6,'RRR','HUJ',4.0
    union all select 7,'HHH','TES',78.0 create table B([INDEX] int,NIX_ID nvarchar(10),NIX_NAME nvarchar(10),NIX_WEIGHT decimal(10,1))
    insert B select 1,'FFF','1',2.0
    union all select 2,'FFF','DES',19.0
    union all select 3,'FFF','1',232.0
    union all select 4,'FFF','DES',32.0
    union all select 5,'RRR','UYJ',232.0
    union all select 6,'GGG','UUN',66.0 select ITEM=case when A.ITEM is null then B.[INDEX] else A.ITEM end,
    *
    from A
    full join B on A.ITEM=B.[INDEX]
      

  3.   

    结果不对.两个表的自增列没有必然的关联的.它只是表的主键而己.
    查询的结果是要把相同的NAME的行放在一起,如果当A,B表的相当NAME的行数不同时,就用NULL代替值.
      

  4.   

    查询的结果是要把相同的ID的行放在一起,如果当A,B表的相同的MIX_ID,NIX_ID的行数不同时,就用NULL代替值.