Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
SQL Server不使用DUP联接所有记录_Sql_Sql Server - Fatal编程技术网

SQL Server不使用DUP联接所有记录

SQL Server不使用DUP联接所有记录,sql,sql-server,Sql,Sql Server,使用SQL Server 2016,我似乎无法理解这一点。我有两张桌子,表A和表B: TableA Item| Value | ValueID -------------------------- 1 | AAA | 1 1 | BBB | 2 TableB Item| Value | ValueID -------------------------- 1 | XXX | 1 1 | YYY |

使用SQL Server 2016,我似乎无法理解这一点。我有两张桌子,表A和表B:

TableA
Item|  Value   |   ValueID
--------------------------
1   |  AAA     |    1
1   |  BBB     |    2


TableB
Item|  Value   |   ValueID
--------------------------
1   |  XXX     |    1
1   |  YYY     |    2
1   |  ZZZ     |    3


What I want to output is:

Item |  ValueA  |  ValueIDA | ValueB  |  ValueIDB
--------------------------------------------------
1    |  AAA     |   1        |  XXX    |  1
1    |  BBB     |   2        |  YYY    |  2
1    | [NULL]   |  [NULL]    |  ZZZ    |  3
我已经尝试了我能想到的每一种加入组合,但我无法得到这个结果

提前谢谢
-MH

只需使用
左连接
完全外部连接
。在这种情况下:

select b.item, a.value as valuea, a.valueid as valueida,
       b.value as valueb, b.valueid as valueidb
from b left join
     a
     on b.item = a.item and b.valueid = a.valueid;

如果您可以在
a
中保留行,即使
b
中没有匹配项,也可以使用
完全联接
。在这种情况下,您将希望在
选择中使用
合并(a.item,b.item)作为项
,使用
右连接

SELECT TableB.ItemID ,
       TableA.Value AS ValueA ,
       TableA.ValueID AS ValueIDA ,
       TableB.Value AS ValueB ,
       TableB.ValueID AS ValueIDB
FROM   TABLEA
       RIGHT JOIN TableB ON TableA.ValueID = TableB.ValueID;

您可以在ValueId上执行TableA right join TableB我想您需要在ValueId上使用别名的完整外部联接。好的-我知道我的问题了,这实际上是我尝试的查询(以及完整外部联接)。我的问题是,我也在预测Item列(我的问题中没有包括它)。我只是在其中一个表上做了预测:其中a.Item=1应该是a.Item=1或b.Item=1谢谢你的回答