1

我有一个非常简单的 MS Access 用户表 (USER_TABLE),由 3 个字段组成: Customer_NumberUser_NameEmail_Address。我有另一个表(NEW_USERS),其中包含对用户的新请求。它有一个User_Status默认为空白的字段,并且还具有Customer_NumberUser_NameEmail_Address字段。

通过的新请求中有一半是已经存在的用户,因此我想设置一个查询,该查询将检查 USER_TABLE 以确定是否存在新请求,使用检查的 Email_Address 字段与 Customer_Number 字段。使这一点复杂化的事实是 1) Customer_Number 不是唯一的(单个客户编号存在许多用户)和 2) 用户可以为不同的客户编号拥有多个帐户。当检查与 USER_TABLE 时,这会导致 NEW_USERS 表中出现 4 种情况:

  1. USER_TABLE 中的客户编号不存在 Email_Address(新)
  2. USER_TABLE 中客户编号的 Email_Address 存在(现有)
  3. USER_TABLE 中的客户编号不存在 Email_Address,但其他客户编号存在(New-Multi)
  4. USER_TABLE 中的客户编号确实存在 Email_Address,其他客户编号也存在(Existing-Multi)

我想做的是运行这些检查并将相应的结果(新的、现有的、新的多或现有的多)输入到 User_Status 字段中。

这似乎是可能的。是否可以运行 4 个单独的查询来更新 NEW_USERS.User_Status?

4

1 回答 1

0

当您在 Access 中工作时,您确实需要一个唯一标识每条记录的字段。至少,一些字段组合,如客户 ID 和电子邮件。

除此之外,由于您需要满足一些条件,因此最简单的方法可能是创建一个单独的 select 语句来比较多个 select 语句的结果之间的数据。查看外部连接以从一个表中选择在另一个表中找不到的结果。就像是 -

insert into user_table select customerid, email_address from 
(select customerid, email_address from new_users inner join user_table on ...) as expr1, 
(select customerid, email_address from new_users outer join user_table on ...) as expr2 
where expr1.customerid = expr2.customerid and expr1.new_users = expr2.new_users

我建议尝试关于 sql 的免费斯坦福课程,有一个关于嵌套 select 语句的方便课程 - 这是获得符合许多标准的结果的好方法。 http://class2go.stanford.edu/

顺便说一句,他们使用“在 where 子句中指定连接”的语法做了很多工作,这种语法越来越不受欢迎,但更容易理解。

于 2013-08-14T19:51:00.567 回答