我想查找在一个表中但不在另一个表中的记录。除了记录的形成方式不同。所以我想确定我想用来比较的列。我以为我已经使用以下代码解决了问题,但它似乎不起作用(返回零记录)...
SELECT A.Name, A.Position, A.[Year]
FROM TABLE A
WHERE NOT EXISTS (
SELECT B.Name, B.Position, B.[Year]
FROM TABLE B
)
或者我应该通过某种加入来做到这一点?谢谢...
我想查找在一个表中但不在另一个表中的记录。除了记录的形成方式不同。所以我想确定我想用来比较的列。我以为我已经使用以下代码解决了问题,但它似乎不起作用(返回零记录)...
SELECT A.Name, A.Position, A.[Year]
FROM TABLE A
WHERE NOT EXISTS (
SELECT B.Name, B.Position, B.[Year]
FROM TABLE B
)
或者我应该通过某种加入来做到这一点?谢谢...
您缺少将WHERE
两个表相互比较的子句:
SELECT A.Name, A.Position, A.[Year]
FROM TABLE A
WHERE NOT EXISTS (
SELECT B.Name, B.Position, B.[Year]
FROM TABLE B
WHERE B.Name = A.Name AND B.Position = A.Position AND B.[Year] = A.[Year]
)
假设您想使用所有三列进行比较,您可以使用反连接。
SELECT A.Name, A.Position, A.[Year]
FROM TABLE_A A
LEFT JOIN TABLE_B B
ON a.name = b.name
and a.position = b.position
and a.[Year] = b.[Year]
WHERE
b.name is null
您可以在表 b 上使用左外连接和 where 子句查找空值。
我假设第一个查询中的所有内容都来自表 A,第二个查询中的所有内容都来自表 B
Select A.Name, A.Position, A.[Year]
from A
Left Join B on A.Name = B.Name and A.Position = B.Position and A.[Year] = B.[Year]
where B.Name is Null