我在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);
第一个只是给我一个空集,而我知道我在table1
上有记录,其中id为1到9,表2中只使用了2和3。
任何帮助?
答案 0 :(得分:10)
通常,IN和NOT的问题与subselect中的NULL有关。试试这个,看它是否有效:
SELECT *
FROM table1
WHERE table1.ID NOT IN (SELECT DISTINCT table1id FROM table2 where tableid is not null);