【问题标题】:MS Access - WHERE IN works, but WHERE NOT IN failsMS Access - WHERE IN 有效,但 WHERE NOT IN 失败
【发布时间】:2012-09-11 19:45:17
【问题描述】:

我在 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。

有什么帮助吗?

【问题讨论】:

  • “成功”和“失败”是什么意思?也许显示一些数据来解释。
  • 它是如何失败或不起作用的?
  • 你说的不起作用是什么意思?请提供示例数据和所需的输出。
  • 编辑了问题以澄清问题。 @Gordon Linoff 的解决方案效果很好。

标签: sql ms-access


【解决方案1】:

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

SELECT *
FROM table1
WHERE table1.ID NOT IN (SELECT DISTINCT table1id FROM table2 where tableid is not null);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-03-08
    • 1970-01-01
    相关资源
    最近更新 更多