使用单个表在Access中复制除外

时间:2014-10-04 08:54:41

标签: sql ms-access

我有一个像这样的结构表:

tblCase
+--------+---------------------+------------+
| CaseID | Reference           | ListID     |
+--------+---------------------+------------+
| 1      | A                   | 101        |
+--------+---------------------+------------+
| 2      | B                   | 101        |
+--------+---------------------+------------+
| 3      | A                   | 102        |
+--------+---------------------+------------+
| 4      | B                   | 102        |
+--------+---------------------+------------+
| 5      | C                   | 102        |
+--------+---------------------+------------+

我尝试编写的查询只返回ListID x中但不在ListID y中的引用。

例如,使用此数据,我比较列表ID 101和列表ID 102,并仅返回参考C,因为参考C仅在ListID 102中找到。

这样的东西
SELECT Reference FROM tblCase WHERE ListID = 102
EXCEPT
SELECT Reference FROM tblCase WHERE ListID = 101

但是,除了在Access中没有工作,我不确定如何在这种情况下复制它。我已经找到了其他类似问题的答案,但我们无法成功地将答案适应我的情况。

由于

编辑:使用SylvainL的建议解决。谢谢你的帮助:)

1 个答案:

答案 0 :(得分:2)

一种简单的方法是使用Not Exists()语句;类似的东西:

Select Reference from MyTable t1
Where ListId = 102 and
  Not Exists (Select * from MyTable t2 where t2.Reference = t1.Reference and T2.ListId = 101)

从MyTable向自身使用Left Join并查找Null值是另一种解决方案。