如何比较2个不同表中的相同文本字段(无相关)并另存为新表

时间:2011-01-27 15:15:36

标签: ms-access excel-2007

我需要比较表用户和表帐户。

两者都有相同的用户代码(文本字段),但它们之间没有关系。

用户代码(必须是11个字符文本)来自:

  • 表帐户是“完美的”(我的意思是正确的)

  • 用户大部分时间都松了一些所需的11个字符

我需要在用户代码中搜索用户代码以寻找与用户类似的内容(最小9或10个字符,无论是从开头还是从中间开始)。  我只需要不匹配的内容,而不是匹配内容。

输出必须是:

  • 来自用户的ID
  • 来自帐户的ID
  • 来自帐户的用户代码
  • 用户的用户代码

我可以在访问或excel中做到这一点,决定你什么更好!

用户示例

iduser        usercode_user
1             1a2b3c4d5
2             123456789a

帐户示例

idaccount     usercode_accounts
55            1a2b3c4d5e6
87            a123456789a

结果示例

iduser    idaccount     usercode_user      usercode_accounts
1         55            1a2b3c4d5          1a2b3c4d5e6
2         87            123456789a         a123456789a

1 个答案:

答案 0 :(得分:1)

SELECT u.iduser, a.idaccount, u.usercode_user, a.usercode_accounts
FROM users AS u, accounts AS a
WHERE (((a.usercode_accounts) Like "*" & [u].[usercode_user] & "*"));

如果您的表包含数千行,那么查询可能会非常缓慢。但它确实会使用您提供的样本数据生成所需的输出。

如果您使用ADO运行查询,请使用ANSI通配符%而不是*。

或者您可以像这样使用ALike比较,查询将与ADO或DAO一起使用。

WHERE (((a.usercode_accounts) ALike "%" & [u].[usercode_user] & "%"))

修改:您的示例数据未在用户和帐户中包含任何相同的用户代码。但要排除完全匹配,请使用:

SELECT u.iduser, a.idaccount, u.usercode_user, a.usercode_accounts
FROM users AS u, accounts AS a
WHERE
    (((a.usercode_accounts)<>[u].[usercode_user]
    And (a.usercode_accounts) ALike "%" & [u].[usercode_user] & "%"));