[英]Join tables SQL Server
我想加入两个表,但我希望结果集只显示不在右侧的匹配项。
例:
LeftTable
RightTable
leftID | FK
选择l.value
来自LeftTable l
加入RightTable r
在l.leftID = r.leftID
我知道这不会给我我想要的东西,但我只想通过使用leftID外键关系找出左表中的哪些项目不会出现在右侧。
有任何想法吗?
如果我们做了什么
select LT.value
from LeftTable LT
left outer join RightTable RT
on LT.leftID = RT.leftID
Where RT.leftId is null
SO join将返回所有匹配以及左侧但不是右侧的行。 使用where子句,我们只获得右表left id为null的那些行。
你几乎拥有它,只需要几个小的改动 - 连接应该是LEFT JOIN,而不是[INNER] JOIN,你需要只返回缺少右表的行,即它的字段为NULL:
SELECT T1.value
FROM LeftTable T1
LEFT JOIN RightTable T2
ON T1.leftID = T2.leftID
WHERE T2.leftID IS NULL
select * from LeftTable where leftID not in (select leftID from RightTable)
SELECT LeftID
FROM LeftTable
LEFT OUTER JOIN RightTable ON LeftTable.LeftID = RightTable.LeftID
WHERE RightTable.RightId IS NULL
exists
替代使用,优先使用where not in
exists
where not in
。 left outer join
检查右边的空状态可能仍然是最佳的。
select
left.*
from
LeftTable as left
where
not exists (
select
*
from
RightTable as right
where
right.RightID = left.LeftID
)
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.