从两个不同的表中加入两个不同的列

时间:2011-12-14 09:35:33

标签: sql-server-2005 join

我有两个临时表 表1

 ID1         Name        ID2            Single
----------------------------------------------------
 1            ABC         1            100
 2            DEF         1            200

表2

 ID1         Name        ID2           Monthly
----------------------------------------------------
 3            PQR         2            500
 4            LMN         2            600

我想要输出

 ID1         Name        ID2            Single   Monthly
--------------------------------------------------------
 1            ABC         1            100        NULL
 2            DEF         1            200        NULL
 3            PQR         2            NULL       500
 4            LMN         2            NULL       600

我使用所有加入没有任何工作 提前谢谢

5 个答案:

答案 0 :(得分:2)

JOIN不适用于这种情况,您需要在此使用UNION

SELECT ID1, NAME, ID2, Single, NULL FROM Table1
UNION ALL
SELECT ID1, NAME, ID2, NULL, Monthly FROM Table2

答案 1 :(得分:2)

为了以防万一,出于某种疯狂的原因,你真的需要它作为JOIN而不是(正如其他人指出的那样)UNION ALL

create table #T1 (ID1 int,Name varchar(10),ID2 int,Single int)
insert into #T1 (ID1 ,        Name  ,      ID2    ,        Single)
select 1            ,'ABC',         1  ,          100 union all
select 2            ,'DEF',         1   ,         200

create table #T2 (ID1 int,Name varchar(10),ID2 int,Monthly int)
insert into #T2 (ID1 ,        Name  ,      ID2    ,        Monthly)
select 3            ,'PQR',         2   ,         500 union all
select 4            ,'LMN',         2   ,         600

select COALESCE(t1.ID1,t2.ID1) as ID1,COALESCE(t1.Name,t2.Name) as Name,
COALESCE(t1.ID2,T2.ID2) as ID2,t1.Single,t2.Monthly
from #T1 t1 full outer join #T2 t2 on 1=0

提供您要求的结果

答案 2 :(得分:1)

您不需要JOINS,需要UNION (ALL)

  

UNION(Transact-SQL)

     

将两个或多个查询的结果合并到一个结果集中   包括属于union中所有查询的所有行。   UNION操作与使用组合列的连接不同   来自两张桌子。

SQL声明

SELECT ID1, Name, ID2, Single, NULL as Monthly
FROM   Table1
UNION ALL
SELECT ID1, Name, ID2, Null, Monthly
FROM   Table2

答案 3 :(得分:0)

尝试使用UNION

SELECT * FROM Single
UNION
SELECT * FROM Monthly

希望这有帮助。

答案 4 :(得分:0)

请使用以下查询...

选择 ID1, 名称, ID2, 单, NULL AS'每月“

表1中的

联盟

选择 ID1, 名称, ID2, NULL AS'Single', 每月

来自表2