【问题标题】:Comparison of a single field to two fields in SQLSQL中单个字段与两个字段的比较
【发布时间】:2017-10-18 16:18:50
【问题描述】:

我在 Microsoft Access 中有一个表,它充当国家的静态列表(命名为国家表),其中 country_id 字段作为主键标识符。我试图在静态列表中使用 country_id 并将它们与另一个包含国家引用(country_ref1 和 country_ref2)的表(命名引用表)进行比较。请注意,引用表在 country_ref1 和 country_ref2 中有重复的条目,并且还包括空值/空值。所有字段都是相同类型的“短/文本”,并且在填充时由两个字母组成。

如果 country_id 表中的 country_id 与引用表中的 country_ref1 和 country_ref2 不匹配,我希望将 country_id 填充到我的查询中。

这是我到目前为止想出的,但是它不起作用(可能是由于“NOT IN”语句没有考虑空值)。我也尝试过使用 LEFT JOIN & NOT EXISTS 没有解决方案。

SELECT country_id FROM country WHERE country_id NOT IN (SELECT DISTINCT Country_ref1 FROM References) AND country_id NOT IN (SELECT DISTINCT Country_ref2 FROM References)

任何帮助将不胜感激。谢谢。

【问题讨论】:

    标签: sql ms-access vba


    【解决方案1】:

    使用NOT EXISTS:

    SELECT c.country_id
    FROM country as c
    WHERE NOT EXISTS (SELECT 1
                      FROM References r
                      WHERE c.country_id IN (Country_ref1, Country_ref2)
                     );
    

    【讨论】:

    • 看起来它可以工作,虽然我不得不调整它,因为我正在从静态表中搜索丢失的 country_id。相反,我选择 country_ref1 和 country_ref2 而不是 country_id,因为它会丢失。谢谢!
    猜你喜欢
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-11
    • 2018-12-03
    相关资源
    最近更新 更多