HeadsR'Us Asked: 2017-04-13 03:50:34 +0800 CST2017-04-13 03:50:34 +0800 CST 2017-04-13 03:50:34 +0800 CST 使用数据库查询的比赛结果的位置? 772 该场景基于比赛项目(跑步/慢跑) 有没有办法通过使用他们的比赛结果来获得一个人的位置。例如,完成比赛最快的人将在单独的比赛位置表中,其值为 1。第二快的人将获得 2 的结果,依此类推。只需使用该人的比赛结果(数据类型 - 时间)。 mysql time 1 个回答 Voted Best Answer McNets 2017-04-13T05:03:22+08:002017-04-13T05:03:22+08:00 您可以使用变量并将其与表交叉连接。您应该为每个返回的记录递增变量值。 请记住,您需要在子查询上设置正确的顺序。 order by duration asc 我已经设置了下一个示例: drop table if exists course; create table if not exists course(id int, duration time); insert into course values (1, '01:20:00'), (2, '01:21:02'), (3, '01:19:02'), (4, '01:22:02'), (5, '01:17:05'), (6, '01:23:02'), (7, '01:12:02'), (8, '01:16:02'), (9, '01:15:02'); select id, duration, @position := @position + 1 as position from (select @position := 0) x, (select id, duration from course order by duration asc) y; drop table if exists course; 这是结果: | id | duration | position | |---:|---------:|----------| | 7 | 01:12:02 | 1 | | 9 | 01:15:02 | 2 | | 8 | 01:16:02 | 3 | | 5 | 01:17:05 | 4 | | 3 | 01:19:02 | 5 | | 1 | 01:20:00 | 6 | | 2 | 01:21:02 | 7 | | 4 | 01:22:02 | 8 | | 6 | 01:23:02 | 9 | 此处为 Rextester 。
您可以使用变量并将其与表交叉连接。您应该为每个返回的记录递增变量值。
请记住,您需要在子查询上设置正确的顺序。
我已经设置了下一个示例:
这是结果:
此处为 Rextester 。