我想比较2列并标记没有匹配的值

时间:2013-02-20 06:48:42

标签: sql ms-access ms-access-2007

我有2个表,这些表来自不同的应用程序,我想访问比较2列(标签名称)并指出我标签名称没有匹配

在最佳情况下,没有匹配的名称,因为两个列表应该相同。

但是,我想访问检查我的表,因为我不想自己检查1000个名字。

是否可以访问标记或着色没有匹配的名称?

如果没有,那么区分“无与伦比”价值观的最佳方式是什么?

提前致谢!

编辑:

我正在使用的表名为

DB_Total

TagNames_EA

在“DB_Total”中我有3列:

"Name"

"Address"

"Type"

在TagNames_EA

我只有列

"Name"

我想比较这两个的原因是因为我想快速检查一下EA中的值是否正确。

我使用的代码是:

SELECT DB_Total.Address, DB_Total.Name, DB_Total.Type
FROM DB_Total LEFT JOIN TagNames_EA ON DB_Total.[Name] = TagNames_EA.[Name]
WHERE (((TagNames_EA.Name) Is Null));

这不幸的是,只返回没有匹配的行。

我希望访问标记现有表中没有匹配项的行。这可能吗?

2 个答案:

答案 0 :(得分:2)

我的印象是,您希望查看 DB_Total 中的所有行,并包含一个计算字段,该字段指示 TagNames_EA 中是否存在匹配的名称

SELECT
    d.Address,
    d.Type,
    d.Name,
    IIf(t.Name Is Null, False, True) AS match_found
FROM
    DB_Total AS d
    LEFT JOIN TagNames_EA AS t
    ON d.Name = t.Name;

如果要使用颜色显示这些数据以区分匹配和不匹配的名称,请根据该查询构建表单并在 match_found 上设置条件格式表达式。

答案 1 :(得分:1)

我从阅读你的问题得到的意思是你知道DB_Total包含一个正确的名单列表,可以用作参考列表。但TagNames_EA可能包含也可能不包含正确的名称。换句话说,您希望在DB_Total中看到TagNames_EA中没有相应名称的所有名称:

   select t.[Name] as TagNames_EA_Incorrect_Names
     from TagNames_EA as t
left join DB_Total as d
       on t.[Name] = d.[Name]
    where d.[Name] is null