Access 2010 SQL - UPDATE查询无效

时间:2015-10-26 09:40:20

标签: sql sql-update ms-access-2010

我需要创建一个查询来更新表中的列,其中的值取自另一个表并匹配一个字段。

这是两个表:

tblMain
  ID     Autonumbering
  Key    Text
  Stat1  Integer

tblStat1 
  ID     Autonumbering
  Key    Text
  Freq   Integer  

我想在tblMain.Stat1的每条记录上更新 tblStat1.FreqtblMain.Key = tblStat1.Key值。

我尝试了这种语法(以某处为例)

  UPDATE tblMain
  SET tblMain.Stat1 = tblStat1.Freq
  WHERE tblMain.Key = tblStat1.Key;

这不起作用,并在第二行返回错误。

经过一些试验后,我发现正确的语法(使用Access查询生成器构建)是这样的:

  UPDATE (tblMaibn INNER JOIN tblStat1 ON tblMain.Key = tblStat1.Key)
  SET tblMain.Stat1 = tblStat1.Freq; 

在第二种语法中,没有WHERE条件的痕迹。 有人可以帮助我理解第一种语法的错误。 由于我正在构建一个新表(连接),它如何在tblMain上工作? 正如我所说,我发现错误的语法作为UPDATE语句的一个例子。

提前谢谢你。 再见, 伊万诺

2 个答案:

答案 0 :(得分:1)

您在第二行的第一个查询中发生的事情是,Access并不知道tblStat1在您的查询中代表什么。

您的第二个查询正在运行的原因是因为它在相关键上使用内部联接。为了让SQL知道tblMain中的哪条记录与tblStat1中的哪条记录相关,您需要使用连接。

您可以在生成的代码中看到它正在更新您想要的表,但是加入到第二个表中。当您更新每条记录时,where条件是多余的。

答案 1 :(得分:1)

In 1st syntax, you can change:

UPDATE tblMain
 SET tblMain.Stat1 = (SELECT Freq
                      FROM tblStat1
                      WHERE tblMain.Key = tblStat1.Key)