从查找查询更新查询

时间:2009-05-05 15:33:12

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

我有一个电子表格,我正在转换为Access数据库。我有一列输入的客户名称,我想用我们的会计系统中的相应客户编号替换。

我创建了一个包含客户信息的表,以及一个显示需要将哪些ID插入源数据的查询。我正在寻找的是:

UPDATE tblStarting_Data
SET CustomerID=x
WHERE TEMPCustomer=y

X和Y来自qryIDPerCustomer。

我可以使用循环吗?如何引用其他查询?

2 个答案:

答案 0 :(得分:2)

MS Access中的另一种可能性(借用Tomalak回答的对象名称):

UPDATE tblStarting_Data, qryIDPerCustomer
SET tblStarting_Data.CustomerID=qryIDPerCustomer.CustomerID
WHERE tblStarting_Data.TEMPCustomer=qryIDPerCustomer.CustomerName

答案 1 :(得分:1)

我认为JOIN会帮助你:

UPDATE 
  tblStarting_Data AS sd 
  INNER JOIN qryIDPerCustomer AS qc ON sd.TEMPCustomer = qc.CustomerName
SET 
  sd.CustomerID = qc.CustomerID;

这也可以表示为相关的子查询(尽管最好使用连接语法):

UPDATE 
  tblStarting_Data
SET 
  CustomerID = (
    SELECT  CustomerID 
    FROM    qryIDPerCustomer
    WHERE   CustomerName = tblStarting_Data.TEMPCustomer
  )

不需要循环,两个语句都会一步更新tblStarting_Data中的所有记录。

相关问题