基本上,您需要先对 tdata 进行排序,然后再对其进行排名。
MySQL
CREATE TABLE playerstats (
`Score` INTEGER,
`Player` VARCHAR(11)
);
INSERT INTO playerstats
(`Score`, `Player`)
VALUES
('2543', 'jkoffa'),
('2204', 'probins'),
('2010', 'rwatson'),
('2010', 'nbk'),
('2010', 'tthamos'),
('1950', 'en,acdonald'),
('1927', 'dmaginis');
SELECT
`Player`
,IF(@score <> `Score` , @rn := @rn + @cor +1, @rn:= @rn) rnknumber
,IF(@score = `Score` , IF(@cor > 0,@cor := @cor +1,@cor := 1), @cor := 0) correction
,@score := `Score` 'Score'
FROM
(SELECT `Score`, `Player` FROM playerstats ORDER BY Score DESC) t1
, (SELECT @score := -1) t2
,(SELECT @rn := 0) t3,(SELECT @cor := 0) t4
播放器 | 号码 | 修正 | 分数
:------------ | :-------- | ---------: | ----:
杰科法 | 1 | 0 | 2543
探针 | 2 | 0 | 2204
沃森| 3 | 0 | 2010
nbk | 3 | 1 | 2010
塔莫斯 | 3 | 2 | 2010
恩,阿克唐纳| 6 | 0 | 1950
dmaginis | 7 | 0 | 1927年
db<>在这里摆弄
对于Mariadb 10.3
CREATE TABLE playerstats (
`Score` INTEGER,
`Player` VARCHAR(11)
);
INSERT INTO playerstats
(`Score`, `Player`)
VALUES
('2010', 'tthamos'),
('1950', 'acdonald'),
('1927', 'dmaginis'),
('2010', 'nbk'),
('2543', 'jkoffa'),
('2204', 'probins'),
('2010', 'rwatson');
SELECT
`Player`
,IF(@score <> `Score` , @rn := @rn + @cor +1, @rn:= @rn ) rnknumber
,IF(@score = `Score` , IF(@cor > 0,@cor := @cor +1,@cor := 1), @cor := 0) correction
,@score := `Score` 'Score'
FROM
(SELECT `Score`, `Player` FROM playerstats ORDER BY Score DESC LIMIT 18446744073709551615) t1
, (SELECT @score := -1) t2
,(SELECT @rn := 0) t3,(SELECT @cor := 0) t4
播放器 | 号码 | 修正 | 分数
:------- | :-------- | ---------: | ----:
杰科法 | 1 | 0 | 2543
探针 | 2 | 0 | 2204
塔莫斯 | 3 | 0 | 2010
nbk | 3 | 1 | 2010
沃森| 3 | 2 | 2010
阿克唐纳德| 6 | 0 | 1950
dmaginis | 7 | 0 | 1927年
db<>在这里摆弄