Microsoft Access 2010 - 在一个查询中更新具有不同值的多行

时间:2012-03-16 10:09:04

标签: sql ms-access database

我有一个关于在MS Access 2010中更新具有不同值的多行的问题。

Table 1: Food
ID | Favourite Food
1 | Apple
2 | Orange
3 | Pear

Table 2: New
ID | Favourite Food
1 | Watermelon
3 | Cherries

现在,单独执行它们看起来很简单(因为这只是一个例子)。但是,如果我有500行来更新1000条记录,我将如何同时执行其中的大量内容。

所以我想要做的是根据“新”表中的新值更新“食物”表。

如果有人能给我一些方向/语法以便我可以在MS Access 2010上测试它,我将不胜感激。如果这需要VBA,请提供一些示例,说明我应该如何以编程方式执行此操作,而不是手动声明 - 言。

谢谢!


ADDENDUM(REAL DATA)

Table: Competitors
Columns: CompetitorNo (PK), FirstName, LastName, Score, Ranking

query: FinalScore
Columns: CompetitorNo, Score, Ranking
  • 注意 - 此查询是对另一个查询的查询,而该查询又是另一个查询的查询(这里是否存在潜在问题?在此FinalScore查询派生之前至少有4个查询。我应该发布它们吗? ?)

在竞争对手表中,填写了除“分数”和“排名”之外的所有列。我们需要从FinalScore查询中获取值并将它们插入相关的竞争对手列中。


附录(查询简要说明)

Table: Competitors
Columns: CompetitorNo (PK), FirstName, LastName, Score, Ranking
Sample Data: AX1234, Simpson, Danny, <blank initially>, <blank initially>

Table: CompetitionRecord
Columns: EventNo (PK composite), CompetitorNo (PK composite), Timing, Bonus
Sample Data1: E01, AX1234, 14.4, 1
Sample Data2: E01, AB1938, 12.5, 0
Sample Data3: E01, BB1919, 13.0, 2

事件否指定唯一的事件ID 时间测量运行200米所需的时间。越少越好。 奖金可以3个值给出(0 - 取消资格,1 - 正常,2 - 例外)。具有特殊优势的竞争对手获得奖励积分(他们的时间减少5%)。

Query: FinalScore
Columns: CompetitorNo (PK), Score, Ranking

分数由胜利计算。例如,在上述事件(E01)中,有三个竞争对手。该活动的获胜者是BB1919。获胜者获得1分。失败者不会得到任何积分。那些被取消资格的人也没有得到任何积分。

此查询列出竞争对手及其累积分数(来自许多事件列表 - E01,E02,E03等),并在每次执行查询时计算排名列中的排名。 (例如,赢得最多200米事件的人将位于此列表的顶部。)

现在,我需要使用此信息更新参赛者表。查询相当复杂 - 包括所有分组,汇总,排名和诸如此类的东西。因此,我不得不创建多个查询来实现最终结果。

1 个答案:

答案 0 :(得分:0)

怎么样:

UPDATE Food 
INNER JOIN [New] 
ON Food.ID=New.ID
SET Food.[Favourite Food] = New.[Favourite Food]