1

我想查找在一个表中但不在另一个表中的记录。除了记录的形成方式不同。所以我想确定我想用来比较的列。我以为我已经使用以下代码解决了问题,但它似乎不起作用(返回零记录)...

SELECT A.Name, A.Position, A.[Year]
  FROM TABLE A
 WHERE NOT EXISTS (

 SELECT B.Name, B.Position, B.[Year]
   FROM TABLE B
)

或者我应该通过某种加入来做到这一点?谢谢...

4

3 回答 3

5

您缺少将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]
)
于 2012-09-05T18:29:17.607 回答
3

假设您想使用所有三列进行比较,您可以使用反连接。

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
于 2012-09-05T18:32:59.333 回答
1

您可以在表 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
于 2012-09-05T18:40:50.917 回答