【问题标题】:Select values that are not included on a table [duplicate]选择表中未包含的值[重复]
【发布时间】:2021-10-17 10:51:27
【问题描述】:

我有一张表“Cells”,主键为“Cell_ID”。有 160 个 ID/记录。还有另一个表,例如“客户”,我在其中使用字段“CellID”,这是一个表列表,使用行源来自表“Cells”的字段“Cell_ID”。

我想创建一个查询,该查询将返回未在 Customers.CellId 字段中使用的所有 Cell_ID 值。

我的第一个想法是使用类似以下的东西:

SELECT Cells.Cell_ID
FROM Cells
WHERE Cells.Cell_ID NOT IN (
SELECT Customers.CellID
FROM Customers);

【问题讨论】:

    标签: sql ms-access


    【解决方案1】:

    您的方法在概念上是可以的。但是如果Customers.CellId 曾经是NULL,就会出现问题。如果是这种情况,则查询将不返回任何行。

    因此,我建议不要将NOT IN 与子查询一起使用。相反,请使用NOT EXISTS:

    SELECT c.Cell_ID
    FROM Cells as c
    WHERE NOT EXISTS (SELECT 1
                      FROM Customers as cu
                      WHERE c.Cell_ID = cu.CellID
                     );
    

    【讨论】:

    • 我需要更多的声望才能投票,但这确实有效!非常感谢
    • @ΝΙΚΟΣΠΑΠΑΣΤΕΦΑΝΟΥ。 . .如果这回答了您的问题,您可以接受答案。
    猜你喜欢
    • 1970-01-01
    • 2013-02-20
    • 1970-01-01
    • 2012-02-11
    • 1970-01-01
    • 2016-09-09
    • 2015-03-06
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多