我有两个表,一个有主键,另一个有它作为外键。
我只想从辅助表中提取数据,除非辅助表没有包含其键的条目。与简单内部联接相反,后者仅返回通过该键联接在一起的行。
Answers:
SELECT <select_list>
FROM Table_A A
LEFT JOIN Table_B B
ON A.Key = B.Key
WHERE B.Key IS NULL
完整图片
从aticle:http : //www.codeproject.com/KB/database/Visual_SQL_Joins.aspx
B.Key IS NULL
但我们仍然具有可比性A.Key = B.Key
?
SELECT
*
FROM
primarytable P
WHERE
NOT EXISTS (SELECT * FROM secondarytable S
WHERE
P.PKCol = S.FKCol)
一般来说,(NOT) EXISTS
是一个更好的选择,然后(NOT) IN
或(LEFT) JOIN
LEFT JOIN
表现出色NOT EXIST
使用“不存在”左联接:
SELECT p.*
FROM primary_table p LEFT JOIN second s ON p.ID = s.ID
WHERE s.ID IS NULL
如果要从“第二张表”中也存在的“第一张表”中选择列,则在这种情况下,也可以使用EXCEPT
。在这种情况下,列名也可以不同,但数据类型应该相同。
例:
select ID, FName
from FirstTable
EXCEPT
select ID, SName
from SecondTable