加入表SQL Server

Gab*_*abe 3 sql sql-server

我想加入两个表,但我希望结果集只显示不在右侧的匹配项.

例:

LeftTable

  • leftID | PK
  • 价值|

RightTable

  • rightID | PK
  • leftID | FK

    选择l.value

    来自LeftTable l

    加入RightTable r

    在l.leftID = r.leftID

我知道这不会给我我想要的东西,但我只想通过使用leftID外键关系找出左表中的哪些项目不会出现在右侧.

有任何想法吗?

Nit*_*dha 11

如果我们做了什么

select LT.value
from LeftTable LT
left outer join RightTable RT
on LT.leftID = RT.leftID
Where RT.leftId is null
Run Code Online (Sandbox Code Playgroud)

SO join将返回所有匹配以及左侧但不是右侧的行.使用where子句,我们只获得右表left id为null的那些行.


Mar*_*ers 5

你几乎拥有它,只需要几个小的改动 - 连接应该是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
Run Code Online (Sandbox Code Playgroud)