2

MS Access で次のクエリ (簡略化) があります。

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

私の問題は機能しないことですが、次の2つは機能します。

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

最初のものは単に空のセットを返しますがtable1、1 から 9 までの範囲の ID を持つレコードがあり、2 と 3 だけがテーブル 2 で使用されていることがわかっています。

何か助けはありますか?

4

1 に答える 1

10

一般に、IN と NOT の問題は、副選択の 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 に答える