2

我在 MS Access 上有以下查询(简化):

SELECT * FROM table1 WHERE table1.ID NOT IN (SELECT DISTINCT table1id FROM table2);

我的问题是它不起作用,但这两个起作用:

SELECT * FROM table1 WHERE table1.ID IN (SELECT DISTINCT table1id FROM table2);
SELECT * FROM table1 WHERE table1.ID NOT IN (2, 3);

第一个只是简单地返回一个空集,而我知道我有table1id 范围从 1 到 9 的记录,而表 2 上只使用了 2 和 3。

有什么帮助吗?

4

1 回答 1

10

通常,IN 和 NOT in 的问题与子选择中的 NULL 有关。试试这个,看看它是否有效:

SELECT *
FROM table1
WHERE table1.ID NOT IN (SELECT DISTINCT table1id FROM table2 where tableid is not null);
于 2012-09-11T19:48:00.063 回答