MS Access:在更新中使用dense_rank

时间:2013-03-25 11:09:16

标签: sql ms-access sql-update dense-rank

我有一个排名表,其中包含不同级别的分数:

(R)  Rankname:  string, name of the rank
(ID) PlayerID:  foreign key(int)
(S)  Score:     integer, higher score means higher endrank
(P)  Position:  integer, representing the location in the rank

更新前:

 R    ID   S    P
'a'   0    5   "undefined"
'a'   1   10   "undefined"
'a'   2   15   "undefined"
'b'   0    5   "undefined"
'b'   1   10   "undefined"
'b'   2   10   "undefined"
'b'   3   15   "undefined"

更新后:

'a'   0    5    3
'a'   1   10    2
'a'   2   15    1
'b'   0    5    3
'b'   1   10    2
'b'   2   10    2
'b'   3   15    1

我尝试使用UPDATE以及DENSE_RANK进行查询,但我无法弄清楚如何使其发挥作用。

1 个答案:

答案 0 :(得分:3)

这取决于创建查询以计算不同的记录,在此示例中,此查询称为qry。要更新您的表格,您可以说:

UPDATE MyTable 
SET MyTable.P = 
  DCount("*","qry","s<=" & [MyTable].[s] & " and r=""" & [MyTable].[r] & """");

还有一点需要注意,这是qry:

SELECT DISTINCT z.r, z.s
FROM MyTable AS z;

MyTable是别名。