我需要在两张桌子上进行连接,我需要表A中的所有内容,以及表格B中的所有内容,其中包括' REF'对于每一行,不在表A的结果中。
重要事实: 表B包含完整的ID /名称数量,但所有其他信息都是空白的。它基本上只是一张包含所有员工姓名和身份证的表格,但却是一份完整的清单。 表A包含有限数量的结果,但所有其他列都包含数据。
我需要的是使用表B作为完整的参考,而不是仅仅看看表A中存在的内容:
"显示表A中的所有内容,并添加额外人员的详细信息 在表B中找到它们在表A中不存在以给我一个完整的结果集"
select
ID,
Name,
StartDate,
EndDate,
State,
Status,
Comment,
IsComment
from
tableA
select
ID,
Name,
StartDate,
EndDate,
State,
Status,
Comment,
IsComment
from
tableB
表A内容:
ID Name START_DATE END_DATE STATE Status Comment Is_Comment
6760 chris 2012-09-03 2012-09-09 4 Applied 0
6524 dave 2012-09-03 2012-09-09 4 Applied 0
4268 james 2012-09-03 2012-09-09 4 Applied Friday-Off 1
7851 rob 2012-09-03 2012-09-09 4 Applied 0
表B内容
ID Name START_DATE END_DATE STATE Status Comment Is_Comment
6760 Chris
6524 dave
4268 james
7851 rob
4521 ryan
5698 julie
4596 rory
1111 mary
5621 owain
9999 jacob
加入后我想看到的内容:
ID Name START_DATE END_DATE STATE Status Comment Is_Comment
6760 chris 2012-09-03 2012-09-09 4 Applied 0
6524 dave 2012-09-03 2012-09-09 4 Applied 0
4268 james 2012-09-03 2012-09-09 4 Applied Friday-Off 1
7851 rob 2012-09-03 2012-09-09 4 Applied 0
4521 ryan
5698 julie
4596 rory
1111 mary
5621 owain
9999 jacob
答案 0 :(得分:2)
试试这个:
select
tableB.ID,
tableB.Name,
tableA.StartDate,
tableA.EndDate,
tableA.State,
tableA.Status,
tableA.Comment,
tableA.IsComment
from
tableB
LEFT JOIN tableA on tableB.ID = tableA.ID
因为每个ID
和Name
都会列出来自tableB ,并且每个其他列都列在tableA中。
如果表之间没有连接,那么其他列从TableA得到NULL - 因为LEFT JOIN - 如果有连接,那么你也可以从TableA获得填充值。
以下是SQL fiddle这个简单解决方案的工作原理。
答案 1 :(得分:1)
请使用此SQL:
declare @tableA table
(
ID int,
Name nvarchar(250),
Age int
)
declare @tableB table
(
ID int,
Name nvarchar(250),
Age int
)
Insert @tableA values (1,'a',10);
Insert @tableA values (2,'b',20);
Insert @tableB values (1,'a',null);
Insert @tableB values (2,'b',null);
Insert @tableB values (3,'c',null);
Insert @tableB values (4,'d',null);
select tblResult.*,T1.Age from
(
select ID,Name from @tableA
union
select ID,Name from @tableB) as tblResult
left join @tableA as T1 on tblResult.ID =T1.ID
答案 2 :(得分:0)
使用左连接
SELECT [columnsListYouNeed]
FROM TableB
LEFT JOIN TableA ON TableA.ID = TableB.ID