首页 > 解决方案 > SQL - 特定比赛的起始号码的 IDENTITY 增量

问题描述

我想为比赛创建一个数据库,但我遇到了问题。

我想在链接表中自动递增起始数字Race_has_Racers.数字应该从 1 开始递增到 N。

是否可以为特定比赛单独增加?

例如,如果我有一个比赛ID=1和一个赛车手,ID=21 join所以他的起始号码是 1,那么一个有ID=15加入的赛车手和他的起始号码是2

现在我创建了一个比赛,ID=2并且参赛者ID=15加入了这场比赛,他的号码是1,然后一个参赛者ID=7加入比赛,ID=1所以他的起始号码将是3

可以自动设置,还是我应该在比赛开始前添加起始号码?

标签: sqlsql-server

解决方案


假设你有一张Race桌子,一张Racer桌子,并且你的Race_has_Racers桌子格式如下:

CREATE TABLE Race_has_Racers
(
    RaceID INT,
    RacerID INT,
    JoinDateTime DATETIME
)

然后你可以编写如下查询来达到你想要的结果:

SELECT ROW_NUMBER() OVER (PARTITION BY RaceId ORDER BY JoinDateTime),
       RacerId,
       RaceId
FROM   Race_has_Racers

Identity 的目的是在表中生成递增值,通常用于自动递增主键


推荐阅读