Sql MS访问:在更新中使用密集排列

Sql MS访问:在更新中使用密集排列,sql,ms-access,sql-update,dense-rank,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

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

(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
densite\u RANK
的查询,但我不知道如何使其工作。

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

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

MyTable有别名。

JET不支持
densite\u-RANK
。如果您的后端数据库是SQL Server,则可以使用ODBC直通查询,并在那里使用Transact-SQL,但在其他情况下,您必须模拟
DENSE\u RANK
SELECT DISTINCT z.r, z.s
FROM MyTable AS z;